Ràng buộc PRIMARY KEY được sử dụng để định nghĩa khoỏ chớnh của bảng. Khoỏ chớnh của một bảng là một hoặc một tập nhiều cột mà giỏ trị của chỳng là duy nhất trong bảng. Hay núi cỏch khỏc, giỏ trị của khoỏ chớnh sẽ giỳp cho ta xỏc định được duy nhất một dũng (bản ghi) trong bảng dữ liệu. Mỗi một bảng chỉ cú thể cú duy nhất một khoỏ chớnh và bản thõn khoỏ chớnh khụng chấp nhận giỏ trị NULL. Ràng buộc PRIMARY KEY là cơ sở cho việc đảm bảo tớnh toàn vẹn thực thể cũng như toàn vẹn tham chiếu.
Để khai bỏo một ràng buộc PRIMARY KEY, ta sử dụng cỳ phỏp như sau:
[CONSTRAINT tờn_ràng_buộc] PRIMARY KEY [(danh_sỏch_cột)]
Nếu khoỏ chớnh của bảng chỉ bao gồm đỳng một cột và ràng buộc PRIMARY KEY được chỉ định ở mức cột, ta khụng cần thiết phải chỉ định danh sỏch cột sau từ khoỏ PRIMARY KEY. Tuy nhiờn, nếu việc khai bỏo khoỏ chớnh được tiến hành ở mức bảng (sử dụng khi số lượng cỏc cột tham gia vào khoỏ là từ hai trở lờn) thỡ bắt buộc phải chỉ định danh sỏch cột ngay sau từ khúa PRIMARY KEY và tờn cỏc cột được phõn cỏch nhau bởi dấu phẩy.
Vớ dụ 3.5: Cõu lệnh dưới đõy định nghĩa bảng SINHVIEN với khoỏ chớnh là MASV
CREATE TABLE sinhvien (
masv NVARCHAR(10)
CONSTRAINT pk_sinhvien_masv PRIMARY KEY, hodem NVARCHAR(25) NOT NULL ,
ten NVARCHAR(10) NOT NULL , ngaysinh DATETIME,
gioitinh BIT,
noisinh NVARCHAR(255), malop NVARCHAR(10) )
Với bảng vừa được tạo bởi cõu lệnh ở trờn, nếu ta thực hiện cõu lệnh:
INSERT INTO sinhvien(masv,hodem,ten,gioitinh,malop) VALUES('0261010001','Lờ Hoàng Phương','Anh',0,'C26101')
một bản ghi mới sẽ được bổ sung vào bảng này. Nhưng nếu ta thực hiện tiếp cõu lệnh:
INSERT INTO sinhvien(masv,hodem,ten,gioitinh,malop) VALUES('0261010001','Lờ Huy','Đan',1,'C26101')
thỡ cõu lệnh này sẽ bị lỗi do trựng giỏ trị khoỏ với bản ghi đó cú.
Vớ dụ 3.6: Cõu lệnh dưới đõy tạo bảng DIEMTHI với khoỏ chớnh là tập bao gồm hai cột MAMONHOC và MASV
CREATE TABLE diemthi (
mamonhoc NVARCHAR(10) NOT NULL , masv NVARCHAR(10) NOT NULL , diemlan1 NUMERIC(4, 2),
diemlan2 NUMERIC(4, 2),
CONSTRAINT pk_diemthi PRIMARY KEY(mamonhoc,masv) )
Lưu ý:
• Mỗi một bảng chỉ cú thể cú nhiều nhất một ràng buộc PRIMARY KEY.
• Một khoỏ chớnh cú thể bao gồm nhiều cột nhưng khụng vượt quỏ 16 cột.