Modifier une colonne MySQL pour qu’elle soit AUTO_INCREMENT

J’essaie de modifier une table pour créer sa colonne de clé primaire AUTO_INCREMENT après le fait. J’ai essayé le code SQL suivant, mais j’ai reçu une notification d’erreur de syntaxe.

 ALTER TABLE document ALTER COLUMN document_id AUTO_INCREMENT 

Est-ce que je fais quelque chose de mal ou n’est-ce pas possible?

 + -------------------- +
 |  VERSION () |
 + -------------------- +
 |  5.0.75-0ubuntu10.2 |
 + -------------------- +

 ALTER TABLE document MODIFY COLUMN document_id INT auto_increment 

Roman a raison, mais notez que la colonne auto_increment doit faire partie de la PRIMARY KEY ou d’une clé UNIQUE (et dans presque 100% des cas, cela devrait être la seule colonne qui constitue la PRIMARY KEY):

 ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY 

Dans mon cas, cela ne fonctionnait que lorsque je mettais not null . Je pense que c’est une contrainte.

 ALTER TABLE document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT; 

AUTO_INCREMENT fait partie du type de données de la colonne, vous devez à nouveau définir le type de données complet de la colonne:

 ALTER TABLE document ALTER COLUMN document_id int AUTO_INCREMENT 

( int pris comme exemple, vous devriez le définir sur le type de la colonne avant)

Le SQL à faire serait:

 ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT; 

Il y a plusieurs raisons pour lesquelles votre SQL risque de ne pas fonctionner. Tout d’abord, vous devez spécifier à nouveau le type de données ( INT dans ce cas). En outre, la colonne que vous essayez de modifier doit être indexée (il ne doit pas nécessairement s’agir de la clé primaire, mais c’est généralement ce que vous souhaitez). De plus, il ne peut y avoir qu’une seule colonne AUTO_INCREMENT pour chaque table. Ainsi, vous souhaiterez peut-être exécuter le SQL suivant (si votre colonne n’est pas indexée):

 ALTER TABLE `document` MODIFY `document_id` INT AUTO_INCREMENT PRIMARY KEY; 

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 modification de la colonne et http://dev.mysql.com/doc /refman/5.1/en/create-table.html pour plus d’informations sur la spécification des colonnes.

Vous devez spécifier le type de la colonne avant la directive auto_increment , c’est-à-dire le ALTER TABLE document MODIFY COLUMN document_id INT AUTO_INCREMENT .

AUTO_INCREMENT fait partie du type de données de la colonne, vous devez à nouveau définir le type de données complet de la colonne:

 ALTER TABLE document MODIFY COLUMN document_id int AUTO_INCREMENT 

(int pris comme exemple, vous devriez le définir sur le type de la colonne avant)

La déclaration ci-dessous fonctionne. Notez que vous devez mentionner à nouveau le type de données pour le nom de la colonne (redéclarer le type de données que la colonne était auparavant).

 ALTER TABLE document MODIFY COLUMN document_id int AUTO_INCREMENT; 

Si aucun de ces travaux 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.

 ALTER TABLE document CHANGE COLUMN document_id document_id INT(11) NOT NULL AUTO_INCREMENT ; 

Pour modifier la colonne dans mysql, nous utilisons alter and modify keywords. Supposons que nous ayons créé un tableau comme:

 create table emp( id varchar(20), ename varchar(20), salary float ); 

Maintenant, nous voulons modifier le type de l’ID de colonne en entier avec incrémentation automatique. Vous pouvez le faire avec une commande comme:

 alter table emp modify column id int(10) auto_increment; 

Syntaxe de la table précédente:

 CREATE TABLE apim_log_request (TransactionId varchar(50) DEFAULT NULL); 

Pour changer le TransactionId en incrémentation automatique, utilisez cette requête

 ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT auto_increment; 
 alter table tbl_user MODIFY COLUMN id int(10) auto_increment; 

Vous pouvez utiliser la requête suivante pour que document_id s’incrémente automatiquement

 ALTER TABLE document MODIFY COLUMN document_id INT auto_increment 

Il est préférable de rendre également la clé primaire document_id

 ALTER TABLE document MODIFY COLUMN document_id INT auto_increment PRIMARY KEY; 

Juste comme ça:

alter table document modify column id int(11) auto_increment;

Vous pouvez le faire comme ceci:

  alter table [table_name] modify column [column_name] [column_type] AUTO_INCREMENT; 

Lorsque vous redéfinissez la colonne, vous devez spécifier à nouveau le type de données et y append auto_increment car il fait partie du type de données.

 ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT; 

Définition de la colonne comme clé primaire et auto_increment en même temps:

  mysql> ALTER TABLE persons MODIFY COLUMN personID INT auto_increment PRIMARY KEY; Query OK, 10 rows affected (0.77 sec) Records: 10 Duplicates: 0 Warnings: 0 mysql> 

Utilisez les requêtes suivantes:

 ALTER TABLE YourTable DROP COLUMN IDCol ALTER TABLE YourTable ADD IDCol INT IDENTITY(1,1)