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 ).