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

Cách tìm tên của một ràng buộc trong SQL Server

Vấn đề:

Bạn muốn tìm tên của các ràng buộc trong bảng trong SQL Server.

Ví dụ:

Chúng tôi muốn hiển thị tên của các ràng buộc trong bảng student .

Giải pháp:

SELECT TABLE_NAME,
       CONSTRAINT_TYPE,CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME=’student’;

Đây là kết quả:

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
sinh viên TỪ KHÓA CHÍNH PK__student__3213E83F357C7D1D
sinh viên DUY NHẤT UQ__student__24E2EDD2AC2A7D87
sinh viên KIỂM TRA CK__student__age__4E88ABD4
sinh viên KEY NGOẠI HỐI FK__student__country__4F7CD00D

Thảo luận:

Sử dụng chế độ xem table_constraints trong information_schema lược đồ. Cột table_name cung cấp cho bạn tên của bảng trong đó ràng buộc được xác định và cột constraint_name chứa tên của ràng buộc. Cột constraint_type cho biết loại ràng buộc:PRIMARY KEY cho loại khóa chính, FOREIGN KEY đối với loại khóa ngoại, UNIQUE cho các giá trị duy nhất và CHECK để kiểm tra ràng buộc.

Ví dụ:khóa chính trong student bảng có tên ràng buộc PK_student_3213E83F357C7D1D . constraint_type cột cung cấp cho bạn thông tin về loại của mỗi ràng buộc; đối với khóa chính, nó là PRIMARY KEY . table_name trong chế độ xem này cho biết bảng nào chứa ràng buộc này.

Tuy nhiên, nếu bạn muốn chọn DEFAULT ràng buộc từ cơ sở dữ liệu, hãy sử dụng truy vấn này bên dưới.

SELECT c.name, c.definition
FROM sys.default_constraints c
JOIN sys.objects o ON o.object_id = c.parent_object_id
WHERE o.name ='student';

Đây là kết quả:

name định nghĩa
DF__student__name__4D94879B ("không xác định")

Tên của DEFAULT ràng buộc được lưu trữ trong tên cột, nhưng giá trị nằm trong cột definition . Tham gia các chế độ xem sys.default_constraint s và sys.objects cho phép chúng tôi chỉ chọn dữ liệu cho một bảng nhất định (trong ví dụ của chúng tôi là bảng student ) với việc sử dụng mệnh đề WHERE. Tên ràng buộc chứa tên của bảng (student ) và tên của cột (name ).


  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ội thảo trên web:Theo dõi tiến trình truy vấn trong SQL Server

  2. Có thể buộc khóa mức hàng trong SQL Server không?

  3. Tìm hiểu xem phân vùng có được nén trong SQL Server (T-SQL) hay không

  4. Xóa các ký tự lạ (A có mũ) khỏi cột varchar của SQL Server

  5. Cách tổng hợp trường thời gian trong SQL Server