web-dev-qa-db-fra.com

Modifier une colonne MySQL en 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 est-ce que ce n'est pas possible?

 + -------------------- + 
 | VERSION () | 
 + -------------------- + 
 | 5.0.75-0ubuntu10.2 | 
 + -------------------- + 
169
C. Ross
ALTER TABLE document MODIFY COLUMN document_id INT auto_increment
326
roman

Roman a raison, mais notez que la colonne auto_increment doit faire partie de la clé primaire ou d'une clé unique (et dans presque 100% des cas, il devrait s'agir de la seule colonne constituant la clé primaire):

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY
67
Roland Bouman

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;
9
Rabia Naz khan

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

ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT

(int pris à titre d'exemple, vous devriez le définir sur le type que la colonne avait auparavant)

5
Dan Soap

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

5
Håvard S

Le SQL pour faire cela serait:

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

Votre code SQL peut ne pas fonctionner pour plusieurs raisons. 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 par table. Donc, vous voudrez peut-être exécuter le code SQL suivant (si votre colonne n'est pas indexée): 

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

Pour plus d'informations, reportez-vous à la documentation MySQL: http://dev.mysql.com/doc/refman/5.1/fr/alter-table.html pour la syntaxe de la colonne de modification et http: // dev .mysql.com/doc/refman/5.1/fr/create-table.html pour plus d’informations sur la spécification des colonnes.

5
Steven Oxley

Vous pouvez le faire comme ça: 

 alter table [table_name] modify column [column_name] [column_type] AUTO_INCREMENT;
3
Aditya Kumar

Vous pouvez utiliser la requête suivante pour que document_id soit incrémenté automatiquement.

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

Il est préférable de faire aussi la clé primaire document_id

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment PRIMARY KEY;
2
Azhar Zafar

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).

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT;
2
user5082888

Si rien de ce qui précède 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 ;
2
Susie

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

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT

(int pris comme exemple, vous devriez le définir sur le type que la colonne avait auparavant)

2
KKK

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;
1
Usman Yaqoob

Pour modifier la colonne dans mysql, nous utilisons alter et modifier les mots-clés. Supposons que nous ayons créé une table comme celle-ci:

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

Nous voulons maintenant 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;
1
user6596773
alter table tbl_user MODIFY COLUMN id int(10) auto_increment;
1
Aminur Rahman

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

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

ALTER TABLE nom_table MODIFY COLUMN id type de données auto_increment;

0
Kartik Madnani

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>
0
Nesimi Taghizade