J'essaie de modifier une table pour faire sa colonne de clé primaire AUTO_INCREMENT
après le fait. J'ai essayé le SQL suivant, mais j'ai reçu une notification d'erreur de syntaxe.
ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT
Suis-je en train de faire quelque chose de mal ou n'est-ce pas possible?
+ -------------------- + | VERSION () | + -------------------- + | 5.0.75-0ubuntu10.2 | + -------------------- +
sql
mysql
alter-table
Traverser
la source
la source
Roman a raison, mais notez que la colonne auto_increment doit faire partie de la PRIMARY KEY ou d'une UNIQUE KEY (et dans presque 100% des cas, ce devrait être la seule colonne qui compose la PRIMARY KEY):
la source
Dans mon cas, cela n'a fonctionné que lorsque je l'ai mis
not null
. Je pense que c'est une contrainte.la source
Le SQL pour ce faire serait:
Il y a plusieurs raisons pour lesquelles votre SQL peut ne pas fonctionner. Vous devez d'abord spécifier à nouveau le type de données (
INT
dans ce cas). De plus, la colonne que vous essayez de modifier doit être indexée (il n'est pas nécessaire que ce soit la clé primaire, mais c'est généralement ce que vous souhaitez). De plus, il ne peut y avoir qu'une seuleAUTO_INCREMENT
colonne pour chaque table. Ainsi, vous souhaiterez peut-être exécuter le SQL suivant (si votre colonne n'est pas indexée):Vous pouvez trouver plus d'informations dans la documentation MySQL: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html pour la syntaxe de la colonne de modification et http://dev.mysql.com/doc /refman/5.1/en/create-table.html pour plus d'informations sur la spécification des colonnes.
la source
Vous devez spécifier le type de la colonne avant la
auto_increment
directive, c'est-à-direALTER TABLE document MODIFY COLUMN document_id INT AUTO_INCREMENT
.la source
MODIFY COLUMN
AUTO_INCREMENT
fait partie du type de données de la colonne, vous devez définir à nouveau le type de données complet de la colonne:(
int
pris comme exemple, vous devez le définir sur le type que la colonne avait avant)la source
Vous pouvez le faire comme ceci:
la source
AUTO_INCREMENT
fait partie du type de données de la colonne, vous devez définir à nouveau le type de données complet de la colonne:(int pris comme exemple, vous devez le définir sur le type que la colonne avait avant)
la source
Vous pouvez utiliser la requête suivante pour que document_id s'incrémente automatiquement
Il est préférable de créer également la clé primaire document_id
la source
La déclaration ci-dessous fonctionne. Notez que vous devez mentionner à nouveau le type de données pour le nom de la colonne (redéclarez le type de données que la colonne était avant).
la source
Si aucun des travaux ci-dessus ne fonctionne, essayez ceci. C'est ce que j'ai fait dans MYSQL et oui, vous devez écrire le nom de la colonne (document_id) deux fois.
la source
Pour modifier la colonne dans mysql, nous utilisons des mots-clés alter et modify. Supposons que nous ayons créé une table comme:
Maintenant, nous voulons modifier le type de l'id de la colonne en entier avec incrémentation automatique. Vous pouvez le faire avec une commande comme:
la source
Syntaxe de table précédente:
Pour changer le TransactionId en incrémentation automatique, utilisez cette requête
la source
la source
Juste comme ça:
alter table document modify column id int(11) auto_increment;
la source
Lorsque vous redéfinissez à nouveau la colonne, vous devez à nouveau spécifier le type de données et y ajouter auto_increment car il fait partie du type de données.
la source
Définition de la colonne comme clé primaire et incrémentation automatique en même temps:
la source
ALTER TABLE nom_table MODIFY COLUMN id type de données auto_increment;
la source
Utilisez les requêtes suivantes:
la source