Để thêm khóa chính tổng hợp, hãy sử dụng lệnh ALTER. Đầu tiên chúng ta hãy tạo một bảng demo
Truy vấn để tạo bảng.
mysql> create table CompositePrimaryKey -> ( -> Id int, -> StudentName varchar(100), -> Age int -> ); Query OK, 0 rows affected (0.56 sec)
Cho đến bây giờ vẫn chưa thêm khóa chính tổng hợp ở trên. Bây giờ chúng ta hãy kiểm tra với sự trợ giúp của lệnh desc.
mysql> desc CompositePrimaryKey;
Sau đây là kết quả đầu ra.
+-------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+-------+ | Id | int(11) | YES | | NULL | | | StudentName | varchar(100) | YES | | NULL | | | Age | int(11) | YES | | NULL | | +-------------+--------------+------+-----+---------+-------+ 3 rows in set (0.09 sec)
Nhìn vào kết quả đầu ra mẫu ở trên, không có từ khóa chính. Điều này tự nó nói rằng không có khóa chính tổng hợp nào khả dụng.
Bây giờ, chúng ta hãy sử dụng lệnh ALTER để thêm khóa chính tổng hợp. Truy vấn như sau.
mysql> ALTER table CompositePrimaryKey add primary key(Id,StudentName); Query OK, 0 rows affected (1.26 sec) Records: 0 Duplicates: 0 Warnings: 0
Ở trên, tôi đã thêm khóa chính tổng hợp với tên cột là “Id” và “StudentName”. Để kiểm tra tương tự, chúng ta có thể sử dụng lệnh DESC. Truy vấn như sau.
mysql> DESC CompositePrimaryKey;
Đây là kết quả đầu ra.
+-------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+-------+ | Id | int(11) | NO | PRI | NULL | | | StudentName | varchar(100) | NO | PRI | NULL | | | Age | int(11) | YES | | NULL | | +-------------+--------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
Như chúng ta có thể thấy trong đầu ra ở trên, “PR” có nghĩa là chúng ta đã thêm thành công khóa chính tổng hợp vào cột Id và StudentName.