MySQL 如何在现有MySQL表的多列上设置主键?
使用ALTER TABLE语句和ADD关键字,我们可以在现有表的多个列上设置主键约束。
阅读更多:MySQL 教程
例子
假设我们有一个名为’Room_allotment’的表如下-
mysql> Create table Room_allotment(Id Int, Name Varchar(20), RoomNo Int);
Query OK, 0 rows affected (0.20 sec)
mysql> Describe Room_allotment;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| Id | int(11) | YES | | NULL | |
| Name | varchar(20) | YES | | NULL | |
| RoomNo | int(11) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.11 sec)
现在我们可以使用以下查询在多列’id’和’Name’上添加复合主键。
mysql> Alter Table Room_allotment ADD PRIMARY KEY(Id, Name);
Query OK, 0 rows affected (0.29 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> Describe Room_allotment;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| Id | int(11) | NO | PRI | 0 | |
| Name | varchar(20) | NO | PRI | | |
| RoomNo | int(11) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.12 sec)
从上面的结果集可以看出,已在多个列上添加了主键。
极客教程