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

Cách trả lại tất cả các ràng buộc kiểm tra bị vô hiệu hóa trong SQL Server (Ví dụ T-SQL)

Nếu bạn cần trả lại danh sách tất cả CHECK các ràng buộc đã bị vô hiệu hóa trong cơ sở dữ liệu SQL Server, bạn có thể chạy mã T-SQL bên dưới.

Ví dụ 1 - Chỉ trả lại Ràng buộc KIỂM TRA đã bị vô hiệu hóa

Truy vấn này chỉ trả về CHECK bị vô hiệu hóa các ràng buộc trong cơ sở dữ liệu hiện tại. Nó 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.

SELECT 
  OBJECT_NAME(parent_object_id) AS 'Table',
  name AS 'Constraint',
  definition
FROM sys.check_constraints
WHERE is_disabled = 1;

Kết quả:

+----------------+-----------------+-------------------------------+
| Table          | Constraint      | definition                    |
|----------------+-----------------+-------------------------------|
| ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate])      |
| Occupation     | chkJobTitle     | ([JobTitle]<>'Digital Nomad') |
+----------------+-----------------+-------------------------------+

Điều này 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 bị vô hiệu hóa vì WHERE mệnh đề chỉ định các hàng có is_disabled cột được đặt thành 1 .

Nếu bạn muốn trả lại tất cả đã bật CHECK ràng buộc, chỉ cần thay đổi 1 thành 0 .

Ví dụ 2 - 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 đối với cơ sở dữ liệu hiện tại (không chỉ những hạn chế bị vô hiệu hóa). Lần này tôi trả về is_disabled để chứng minh nơi truy vấn trước đó lấy giá trị của nó từ đâu:

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             | 0                |
| ConstraintTest | chkValidEndDate | 1             | 1                |
| ConstraintTest | chkTeamSize     | 0             | 0                |
| Occupation     | chkJobTitle     | 1             | 1                |
+----------------+-----------------+---------------+------------------+

Tôi cũng đã bao gồm is_not_trusted trong truy vấn này. Cần thận trọng khi lưu ý đến giá trị này, vì một ràng buộc có thể vẫn không đáng tin cậy ngay cả khi nó đã được kích hoạt lại. Để có một cuộc thảo luận chi tiết (và các ví dụ) về cờ này, hãy xem Những gì bạn nên biết về VỚI NOCHECK khi bật Ràng buộc CHECK trong SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kích hoạt SQL Server - Phần 2 Trình kích hoạt DDL &LOGON

  2. Sử dụng IDENT_CURRENT () để trả lại giá trị nhận dạng hiện tại trên cột nhận dạng trong SQL Server

  3. Điều kiện chạy hàng đợi quy trình SQL Server

  4. Làm cách nào để xuất tất cả dữ liệu từ bảng sang định dạng sql có thể chèn?

  5. Kích thước tối đa của một biến varchar (max)