2010-04-24 61 views
5

我已經在MySQL的表中有一個主鍵:如何將SQL中的主鍵更改爲auto_increment?

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 

回答

7

離開關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屬性的影響。

+0

非常感謝! 「ALTER TABLE禮物MODIFY giftID AUTO_INCREMENT」好像需要「INT」 - 「改變表格禮物修改giftID int auto_increment;」 – 2010-04-24 12:09:33