ALTER table - ajout d'auto-incrémentation dans MySQL
J'ai créé une table dans MySQL avec sur la colonne itemID
. Après la création de la table, je veux maintenant changer cette colonne pour AUTOINCREMENT
. Comment cela peut-il être fait à l'aide de ALTER déclarations?
Définition de la Table:
ALLITEMS (itemid int(10) unsigned, itemname varchar(50))
Je suis en utilisant le code suivant mais il est en train de jeter erreur: syntaxe incorrecte.
ALTER TABLE allitems
MODIFY itemid INT(10) UNSIGNED AUTOINCREMENT;
- Doublon de: stackoverflow.com/questions/4795382/...
AUTOINCREMENT
a un trait de soulignement:AUTO_INCREMENT
....
Vous devez vous connecter pour publier un commentaire.
J'ai été confondu avec
CHANGE
etMODIFY
mots-clés avant de trop:Alors que nous sommes là, notez également que
AUTO_INCREMENT
pouvez également démarrer avec un nombre prédéfini:CHANGE
etMODIFY COLUMN
?UNSIGNED
dans leCHANGE
clause, vous tournezitemid
dans un SIGNÉ de type int, et donc de réduire sa valeur maximale.La syntaxe:
Mais la table a besoin d'une clé définie (ex clé primaire sur itemId).
ex primary key
etprimary key
sur itemid?Syntaxe de base pour l'ajout d'un AUTO_INCREMENT PRIMARY KEY pour les OP existantes de la table:
Ou pour une nouvelle table, voici l'exemple de syntaxe de les docs:
Les pièges et les choses sont à noter:
AUTO_INCREMENT
colonne doit avoir un indice sur elle. (Généralement, vous aurez envie d'être la CLÉ PRIMAIRE, mais MySQL ne l'exige pas.)AUTO_INCREMENT
colonnesUNSIGNED
. À partir de la documentation:CHANGE
ouMODIFY
clause de faire une colonneAUTO_INCREMENT
(ou, en fait, chaque fois que vous utilisez unCHANGE
ouMODIFY
clause de), vous devez être prudent afin d'inclure tous les modificateurs de la colonne, commeNOT NULL
ouUNSIGNED
, qui se manifestent dans la définition de la table lorsque vous appelezSHOW CREATE TABLE yourtable
. Ces modificateurs seront perdues autrement.