2010-04-24 10 views
5

J'ai une table MySQL qui a une clé primaire:Comment faire pour modifier une clé primaire dans 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 |  | 
+---------------+-------------+------+-----+---------+-------+ 

mais je voulais faire auto_increment.

L'instruction suivante a échoué. Comment peut-il être modifié pour qu'il puisse fonctionner? grâce

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

Répondre

7

laisser tomber le primary key attribut:

ALTER TABLE gifts MODIFY giftID INT AUTO_INCREMENT; 

Certains attributs colonne, tels que PRIMARY KEY, ne sont pas exactement les propriétés de la colonne tant que raccourcis pour d'autres choses. Une colonne marquée PRIMARY KEY, par exemple, est placée dans l'index PRIMARY. De plus, toutes les colonnes de l'index PRIMARY ont l'attribut NOT NULL. (À côté: pour avoir une clé primaire multi-colonnes, vous devez utiliser une clause de contrainte distincte plutôt que plusieurs attributs de colonne PRIMARY KEY.) Comme la colonne est déjà dans l'index PRIMARY, vous n'avez pas besoin de le spécifier à nouveau lorsque vous modifiez le colonne. Essayez SHOW CREATE TABLE gifts; pour voir les effets de l'utilisation de l'attribut PRIMARY KEY.

+0

merci beaucoup! "ALTER TABLE cadeaux MODIFIER giftID AUTO_INCREMENT" semble avoir besoin de "INT" - "alter table gifts modifier giftID int auto_increment;" –