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