MySQL cho phép đặt PRIMARY KEY trên nhiều cột (composite primary key). Lợi ích: có thể thao tác trên nhóm cột như một thực thể duy nhất.
Ví dụ
Tạo bảng allotment với khóa chính tổ hợp trên RollNo và RoomNo:
mysql> CREATE TABLE allotment(
RollNo INT,
Name VARCHAR(20),
RoomNo INT,
PRIMARY KEY(RollNo, RoomNo)
);
Query OK, 0 rows affected (0.23 sec)
mysql> DESCRIBE allotment;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| RollNo | int(11) | NO | PRI | 0 | |
| Name | varchar(20) | YES | | NULL | |
| RoomNo | int(11) | NO | PRI | 0 | |
+--------+-------------+------+-----+---------+-------+
Thử chèn bản ghi trùng khóa tổ hợp:
mysql> INSERT INTO allotment VALUES(1, 'Aarav', 201), (2, 'Harshit', 201), (1, 'Rahul', 201); ERROR 1062 (23000): Duplicate entry '1-201' for key 'PRIMARY'
Lỗi xảy ra vì cặp (RollNo, RoomNo) = (1, 201) đã tồn tại.