Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Ràng buộc KIỂM TRA trong SQL Server 2012 không kích hoạt trên các câu lệnh UPDATE hoặc DELETE

Chúng tôi có thể buộc kiểm tra cập nhật theo cách này.
Giả sử bạn có một bảng như thế này

create table UserTest(Id int, IsEnabled bit, [GroupId] int)

Bây giờ, chúng tôi muốn kiểm tra chỉ 1 người dùng được kích hoạt bởi [GroupId] .

Thông thường, ràng buộc sẽ giống như

ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled  CHECK (dbo.checkOnlyOne(GroupId)=1)

Ràng buộc này sẽ không được kích hoạt trên bản ghi đã được cập nhật cho đến khi bạn cập nhật GroupId .
Vì vậy, chúng ta phải buộc ràng buộc xác thực cột IsEnabled bằng cách thực hiện

ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled  CHECK (dbo.checkOnlyOne(GroupId, IsEnabled )=1)

Không thành vấn đề nếu bạn sử dụng hay không sử dụng giá trị IsEnabled vào hàm.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hướng dẫn:Thiết lập tính khả dụng cao của SQL Server

  2. Truy vấn SQL để tìm Thiếu số thứ tự

  3. Kiểm tra có bao nhiêu mục thư trong hàng đợi trong thư cơ sở dữ liệu trong SQL Server (T-SQL)

  4. mssql 2005 datetime và jdbc

  5. Làm tròn số DECIMAL (14,3) đến chữ số thập phân thứ ba trong SQL 2008