Modifier une base de données MySQL colonne de type AUTO_INCREMENT
Je suis en train de modifier une table pour faire sa colonne de clé primaire AUTO_INCREMENT
après le fait. J'ai essayé le code SQL suivant, mais une erreur de syntaxe notification.
ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT
Je fais quelque chose de mal ou n'est-ce pas possible?
+--------------------+ | VERSION() | +--------------------+ | 5.0.75-0ubuntu10.2 | +--------------------+
Vous devez vous connecter pour publier un commentaire.
Romain est de droite, mais notez que le type de colonne auto_increment doit faire partie de la CLÉ PRIMAIRE ou une CLÉ UNIQUE (et dans presque 100% des cas, elle devrait être la seule colonne qui représente la CLÉ PRIMAIRE):
Dans mon cas, il ne travaille que quand j'ai mis
not null
. Je pense que c'est une contrainte.Le SQL, cela serait:
Il ya un couple de raisons que votre SQL ne fonctionne pas. Tout d'abord, vous devez re-spécifier le type de données (
INT
dans ce cas). En outre, la colonne que vous essayez de modifier doit être indexée (il n'a pas à être la clé primaire, mais généralement c'est ce que vous voulez). En outre, il peut seulement être unAUTO_INCREMENT
colonne de chaque tableau. Ainsi, vous pouvez exécuter la requête SQL suivante (si votre colonne n'est pas indexée):Vous pouvez trouver plus d'informations dans la documentation de MySQL: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html pour le modifier colonne de la syntaxe et de la http://dev.mysql.com/doc/refman/5.1/en/create-table.html pour plus d'informations sur la spécification des colonnes.
AUTO_INCREMENT
est une partie de la colonne du type de données, vous devez définir le type de données complète pour la colonne de nouveau:(
int
pris comme exemple, vous devez définir le type de la colonne avait avant)Vous devez spécifier le type de la colonne avant la
auto_increment
la directive, c'est à direALTER TABLE document MODIFY COLUMN document_id INT AUTO_INCREMENT
.MODIFY COLUMN
AUTO_INCREMENT
est une partie de la colonne du type de données, vous devez définir le type de données complète pour la colonne de nouveau:(int est pris comme un exemple, vous devez définir le type de la colonne avait avant)
Vous pouvez utiliser la requête suivante pour faire document_id pour incrémenter automatiquement
Il est préférable de faire document_id clé primaire ainsi
Ci-dessous la déclaration de travaux. Notez que vous devez mentionner le type de données à nouveau pour le nom de la colonne (redeclare le type de données de la colonne était avant).
Si aucun des travaux ci-dessus de l'essayer. C'est ce que j'ai fait dans MYSQL et oui, vous devez écrire le nom de la colonne (document_id) deux fois.
Vous pouvez le faire comme ceci:
De modifier la colonne à mysql d'utiliser de modifier et de modifier les mots clés. Supposons que nous avons créé une table:
Maintenant, nous voulons modifier le type de la colonne id en entier avec incrément automatique. Vous pouvez le faire avec une commande comme:
Tableau précédent syntaxe:
Pour la modification de la TransactionId d'incrément automatique utilisez cette requête
Comme cela:
alter table document modify column id int(11) auto_increment;
Comme vous sont en train de redéfinir la colonne de nouveau, vous devez spécifier le type de données à nouveau et ajouter auto_increment, comme c'est une partie de type de données.
Réglage de la colonne de clé primaire et de auto_increment dans le même temps:
ALTER TABLE nom_table MODIFIER les id de COLONNE de type auto_increment;
Utiliser les requêtes suivantes: