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

Tên Ràng buộc Mặc định trong SQL Server là gì?

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, countrystudent , với các ràng buộc sau:PRIMARY KEY (cột id trong các bảng countrystudent ), 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 countryPK__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 countryUQ__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 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. FILE_ID () so với FILE_IDEX () trong SQL Server:Sự khác biệt là gì?

  2. SYSDATETIME () Ví dụ trong SQL Server (T-SQL)

  3. Tùy chỉnh cảnh báo đám mây Spotlight

  4. @@ MAX_PRECISION trong SQL Server là gì?

  5. Khi nào tôi nên sử dụng biến bảng so với bảng tạm thời trong máy chủ sql?