7

我在 MySQL 中有一个具有主键的表:

mysql> desc gifts;
+---------------+-------------+------+-----+---------+-------+
| Field         | Type        | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| giftID        | int(11)     | NO   | PRI | NULL    |       |
| name          | varchar(80) | YES  |     | NULL    |       |
| filename      | varchar(80) | YES  |     | NULL    |       |
| effectiveTime | datetime    | YES  |     | NULL    |       |
+---------------+-------------+------+-----+---------+-------+

但我想让它成为auto_increment。

以下语句失败。如何对其进行修改以使其正常工作?谢谢

mysql> alter table gifts modify giftID int primary key auto_increment;
ERROR 1068 (42000): Multiple primary key defined
4

1 回答 1

10

去掉primary key属性:

ALTER TABLE gifts MODIFY giftID INT AUTO_INCREMENT;

某些列属性,例如PRIMARY KEY,与其说是其他事物的快捷方式,不如说是列的属性。例如,标记PRIMARY KEY为 的列被放置在PRIMARY索引中。PRIMARY此外,索引中的所有列都被赋予了NOT NULL属性。(旁白:要拥有多列主键,必须使用单独的约束子句而不是多PRIMARY KEY列属性。)由于该列已经在PRIMARY索引中,因此在修改该列时无需再次指定。尝试SHOW CREATE TABLE gifts;查看使用该PRIMARY KEY属性的影响。

于 2010-04-24T11:57:33.347 回答