Một bảng thường cĩ một hay nhiều cột với các giá trị riêng để nhận biết mỗi hàng trong bảng. Các cột này được gọi là khĩa chính (Primary key) của bảng và bảo đảm tính tồn vẹn thực thể của bảng.
SQL Server tự động tạo một chỉ mục cho bảng ứng với các cột tham gia primary key constraint.
Một bảng chỉ cĩ một constraint Primay key.
Một cột nằm trong constraint Primay key khơng thể chấp nhận giá trị Null, trùng lắp. Bởi vì Primay key constraint bảo đảm tính duy nhất của dữ liệu nên chúng thường được ấn định cho cột nhận dạng (identity column).
Nếu một Primay key constraint được ấn định trên nhiều cột, các giá trị cĩ thể được lặp lại trong một cột, nhưng mỗi sự kết hợp giá trị từ tất cả các cột trong Primay key constraint phải là sự kết hợp duy nhất.
Tạo Primary Key Constraint
Cĩ thể tạo constraint Primay key trong khi tạo table hoặc thêm constraint Primay key cho table cĩ sẳn
Để hiệu chỉnh constraint Primay key của một table thì bạn phải xĩa constraint Primay key và tạo lại.
Định nghĩa Primary Key Constraint khi tạo bảng:
- Định nghĩa ở mức cột
CREATE TABLE tablename
(columname datatype [ CONSTRAINT constraintname ]
PRIMARY KEY [ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = fillfactor ] [ON {filegroup | DEFAULT} ] [,...]
- Định nghĩa ở mức bảng
CREATE TABLE tablename
(columname datatype [,...], [CONSTRAINT constraintname ]
PRIMARY KEY [ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) } [ WITH FILLFACTOR = fillfactor ] [ ON { filegroup | DEFAULT } ]
Ví dụ 1: Vừa tạo bảng vừa định nghĩa Primary Key Constraint Cách 1: Định nghĩa ở mức cột
CREATE TABLE Table1
(col1 INT NOT NULL PRIMARY KEY, col2 VARCHAR(30)
)
-- Kiểm tra constraint
Cách 2: Định nghĩa ở mức bảng CREATE TABLE Table2
(col1 INT NOT NULL, col2 VARCHAR(30)
CONSTRAINT Table2_PK PRIMARY KEY(col1) )
EXEC Sp_helpconstraint Table1
Định nghĩa Primary Key Constraint với bảng đã tồn tại:
- Định nghĩa ở mức cột
ALTER TABLE tablename ADD columname datatype [CONSTRAINT constraintname ] PRIMARY KEY [ON {filegroup | DEFAULT} ] [,...]
- Định nghĩa ở mức bảng
ALTER TABLE tablename ADD[CONSTRAINT constraintname] PRIMARY KEY { ( column [ ASC | DESC ] [ ,...n ] ) }
[ ON { filegroup | DEFAULT } ]
Ví dụ 2: Thêm một PRIMARY KEY constraint cho một bảng cĩ sẳn CREATE TABLE Table3
( col1 INT NOT NULL, col2 VARCHAR(30)
)
ALTER TABLE Table3
ADD CONSTRAINT table3_PK PRIMARY KEY (col1) EXEC Sp_helpconstraint Table3
Lưu ý: Khi một Primary Key Constraint được thêm vào một bảng với cột cĩ sẳn trong bảng thì SQL Server sẽ kiểm tra dữ liệu hiện cĩ cĩ tuân theo các qui tắc của một Primary key hay khơng: Khơng Null, Khơng trùng lắp. Nếu khơng thỏa qui
tắc thì sẽ khơng tạo được Primary Key Constraint.
Xĩa một Primary Key Constraint
ALTER TABLE Table2
Lưu ý: Khơng thể xĩa một Primary Key constraint nếu nĩ được tham chiếu bởi một Foreign key Constraint của một bảng khác, muốn xĩa thì phải xĩa Foreign key Constraint trước.