Vấn đề:
Bạn muốn biết tên mặc định của các ràng buộc trong cơ sở dữ liệu SQL Server.
Ví dụ:
Trong cơ sở dữ liệu của chúng tôi, chúng tôi tạo hai bảng, country
và student
, với các ràng buộc sau:PRIMARY KEY
(cột id
trong các bảng country
và student
), FOREIGN KEY
(cột country_id
trong bảng student
), DEFAULT
(cột name
trong bảng student
), UNIQUE
(cột name
trong bảng country
và cột personal_number
trong bảng student
) và CHECK
(cột age
trong bảng student
).
Giải pháp:
CREATE TABLE country ( id int NOT NULL primary key, name varchar(100) UNIQUE ); CREATE TABLE student ( id int NOT NULL primary key, name varchar(100) NOT NULL DEFAULT 'unknown', personal_number varchar(100) UNIQUE, age int CHECK(age>15), country_id int FOREIGN KEY references country(id) );
Hãy hiển thị cách SQL Server đặt tên cho các ràng buộc của các bảng này theo mặc định. Sử dụng truy vấn này để xem chúng:
SELECT TABLE_CATALOG, TABLE_NAME, CONSTRAINT_TYPE,CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
Đây là kết quả:
TABLE_NAME | CONSTRAINT_TYPE | CONSTRAINT_NAME |
---|---|---|
country | TỪ KHÓA CHÍNH | PK__country__3213E83F7EFD826D |
country | DUY NHẤT | UQ__country__72E12F1BB69A1D8C |
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:
Khi chúng tôi tạo bảng của mình, chúng tôi đặt các ràng buộc cho một số cột. Tuy nhiên, chúng tôi không chỉ định tên cho các ràng buộc này, vì vậy chúng được đặt tên theo mặc định. Tên mặc định cho các ràng buộc được tạo như thế nào?
Trong SQL Server, tên ràng buộc mặc định bắt đầu bằng các tiền tố cụ thể:PK
, UQ
, CK
hoặc FK
.
Tên mặc định cho PRIMARY KEY
ràng buộc bắt đầu bằng ‘PK
', Theo sau là dấu gạch dưới (‘__
’), Tên bảng, thêm dấu gạch dưới (‘ __
’) Và một số thứ tự thập lục phân được tạo bởi SQL Server. Trong ví dụ của chúng tôi, PK__country__3213E83F7EFD826D
là tên mặc định cho ràng buộc khóa chính trong bảng country
và PK__student__3213E83F357C7D1D
là tên mặc định cho ràng buộc khóa chính trong bảng student
.
Tên mặc định cho FOREIGN KEY
ràng buộc bắt đầu bằng ‘FK
', Theo sau là dấu gạch dưới (‘__
’), Tên bảng, thêm dấu gạch dưới (‘ __
’), Tên của bảng có liên quan và số thứ tự thập lục phân được tạo bởi SQL Server. Trong ví dụ của chúng tôi, FK__student__country__4F7CD00D
là tên mặc định cho ràng buộc khóa ngoại trong bảng student
tương đương với cột id
trong bảng country
.
Tên mặc định cho UNIQUE
ràng buộc là ‘UQ
’, Dấu gạch dưới (‘ __
’), Tên bảng, thêm dấu gạch dưới (‘ __
’) Và một số thứ tự thập lục phân được tạo bởi SQL Server. Trong ví dụ của chúng tôi, UQ__country__72E12F1BB69A1D8C
là tên mặc định của ràng buộc duy nhất cho tên cột trong bảng country
và UQ__student__24E2EDD2AC2A7D87
của UNIQUE
ràng buộc cho tên cột của bảng student
. UNIQUE
các ràng buộc có nhiều cột được đặt tên theo một mẫu tương tự.
Tên mặc định cho CHECK
ràng buộc là ‘CK
’, Dấu gạch dưới (‘ __
’), Tên bảng, thêm dấu gạch dưới (‘ __
’), Tên cột, thêm dấu gạch dưới (‘ __ ’) và số thứ tự thập lục phân được tạo bởi SQL Server. Trong ví dụ của chúng tôi, CK__student__age__4E88ABD4
là tên mặc định cho CHECK
ràng buộc cho cột age
của bảng student
.