Nếu bạn cần trả lại danh sách tất cả CHECK
không đáng tin cậy trong cơ sở dữ liệu SQL Server, bạn có thể chạy mã T-SQL bên dưới.
Bởi "không đáng tin cậy", tôi đang đề cập đến những ràng buộc có is_not_trusted
của chúng cờ được đặt thành 1
.
Ví dụ 1 - Chỉ trả lại Ràng buộc về KIỂM TRA không tin cậy
Truy vấn này chỉ trả về CHECK
không đáng tin cậy các ràng buộc trong cơ sở dữ liệu hiện tại.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, definition FROM sys.check_constraints WHERE is_not_trusted = 1;
Kết quả:
+----------------+-----------------+---------------+-------------------------------+ | Table | Constraint | is_disabled | definition | |----------------+-----------------+---------------+-------------------------------| | ConstraintTest | chkPrice | 0 | ([Price]>(0)) | | ConstraintTest | chkValidEndDate | 1 | ([EndDate]>=[StartDate]) | | Occupation | chkJobTitle | 1 | ([JobTitle]<>'Digital Nomad') | +----------------+-----------------+---------------+-------------------------------+
Truy vấn này trả về tên ràng buộc, tên của bảng mà nó được áp dụng và định nghĩa của ràng buộc.
Nó cũng trả về is_disabled
cột. Điều này cho chúng tôi biết liệu ràng buộc hiện đang được kích hoạt hay bị vô hiệu hóa. Điều này có thể quan trọng cần biết, vì một ràng buộc có thể được bật nhưng đồng thời không đáng tin cậy.
Nó truy vấn sys.check_constraints
chế độ xem hệ thống. Chúng tôi biết nó chỉ trả về các ràng buộc không đáng tin cậy vì WHERE
mệnh đề chỉ xác định các hàng có is_not_trusted
cột được đặt thành 1
.
Nếu bạn muốn trả lại tất cả đáng tin cậy CHECK
ràng buộc, chỉ cần thay đổi 1
thành 0
.
Ví dụ 2 - Trả lại Trạng thái Tin cậy
Đây là một lần nữa, nhưng lần này tôi hoán đổi definition
với is_not_trusted
cột:
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints WHERE is_not_trusted = 1;
Kết quả:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 1 | | ConstraintTest | chkValidEndDate | 1 | 1 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
Có thể là thừa nếu bao gồm is_not_trusted
, nhưng ít nhất nó cũng giúp nhắc lại thực tế rằng một ràng buộc đã bật vẫn có thể không đáng tin cậy.
Ví dụ 3 - Trả lại tất cả các ràng buộc của CHECK
Truy vấn sau trả về tất cả CHECK
các ràng buộc cho cơ sở dữ liệu hiện tại (không chỉ cho những cơ sở dữ liệu không đáng tin cậy):
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints;
Kết quả:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 1 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
Để có một cuộc thảo luận chi tiết (và các ví dụ) về is_not_trusted
cờ, hãy xem Những điều bạn nên biết với NOCHECK khi bật Ràng buộc KIỂM TRA trong SQL Server.