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 .