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

Cách trả lại tất cả các ràng buộc khóa ngoại 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ả các ràng buộc khóa ngoại đã 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 các ràng buộc khóa ngoại bị vô hiệu hóa

Truy vấn này chỉ trả về các ràng buộc khóa ngoại bị vô hiệu hóa trong cơ sở dữ liệu hiện tại. Đối với ví dụ này, tôi chỉ trả về tên của ràng buộc, cùng với trạng thái bị vô hiệu hóa và đáng tin cậy của nó.

 CHỌN tên AS 'Ràng buộc', is_disabled, is_not_trustedFROM sys.foreign_keysWHERE is_disabled =1; 

Kết quả:

 + ------------------------ + --------------- + ----- ------------- + | Ràng buộc | is_disabled | is_not_trusted || ------------------------ + --------------- + ------ ------------ || FK_BandMember_Band | 1 | 1 || FK_BandMember_Musician | 1 | 1 | + ------------------------ + --------------- + ------ ------------ + 

Điều này truy vấn sys.foreign_keys 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 chỉ muốn trả lại đã bật ràng buộc khóa ngoại, chỉ cần thay đổi 1 thành 0 .

Lưu ý rằng is_not_trusted cờ cũng được đặt thành 1 cho những ràng buộc bị vô hiệu hóa này. Đó là bởi vì hệ thống không thể đảm bảo rằng ràng buộc đã kiểm tra tất cả dữ liệu. Điều này có ý nghĩa, bởi vì việc vô hiệu hóa một ràng buộc sẽ mở ra khả năng dữ liệu không hợp lệ vào cơ sở dữ liệu mà không được kiểm tra.

Đây là cùng một truy vấn, nhưng lần này tôi bao gồm bảng và bảng được tham chiếu cho mỗi ràng buộc:

 CHỌN tên AS 'Constraint', OBJECT_NAME (parent_object_id) AS "Table", OBJECT_NAME (reference_object_id) AS "Referenced Table", is_disabled, is_not_trustedFROM sys.foreign_keysWHERE is_disabled =1; 

Kết quả:

 + ------------------------ + ------------ + -------- ------------ + --------------- + ------------------ + | Ràng buộc | Bảng | Bảng tham chiếu | is_disabled | is_not_trusted || ------------------------ + ------------ + --------- ----------- + --------------- + ------------------ || FK_BandMember_Band | BandMember | Ban nhạc | 1 | 1 || FK_BandMember_Musician | BandMember | Nhạc sĩ | 1 | 1 | + ------------------------ + ------------ + --------- ----------- + --------------- + ------------------ +  

Ví dụ 2 - Trả lại tất cả các ràng buộc về khóa ngoại

Truy vấn sau trả về tất cả các ràng buộc khóa ngoại cho cơ sở dữ liệu hiện tại (không chỉ các ràng buộc bị vô hiệu hóa):

 CHỌN tên AS 'Ràng buộc', is_disabled, is_not_trustedFROM sys.foreign_keys; 

Kết quả:

 + -------------------------------- + ------------- - + ------------------ + | Ràng buộc | is_disabled | is_not_trusted || -------------------------------- + -------------- - + ------------------ || FK_BandMember_Band | 1 | 1 || FK_BandMember_Musician | 1 | 1 || FK_MembershipPeriod_BandMember | 0 | 0 | + -------------------------------- + -------------- - + ------------------ + 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách xem nhật ký giao dịch trong SQL Server 2008

  2. Học thiết kế cơ sở dữ liệu với SQL Server Management Studio (SSMS) - Phần 2

  3. Có thể xảy ra va chạm GUID không?

  4. Các phương pháp tốt nhất để chạy tổng - được cập nhật cho SQL Server 2012

  5. Cách đổi tên tên cột hoặc tên bảng trong SQL Server - Hướng dẫn SQL Server / T-SQL Phần 36