web-dev-qa-db-fra.com

Comment ajouter AUTO INCREMENT à une colonne existante?

Comment ajouter auto_increment à une colonne existante d'une table MySQL?

57
mpen

Je pense que vous voulez MODIFY la colonne comme décrit pour la commande ALTER TABLE . Cela pourrait être quelque chose comme ça:

ALTER TABLE users MODIFY id INTEGER NOT NULL AUTO_INCREMENT;

Avant d’exécuter ci-dessus, assurez-vous que la colonne id a un index primaire.

82
Don Kirkby

Méthode permettant d'ajouter AUTO_INCREMENT à une table avec des données tout en évitant l'erreur “Entrée en double

  1. Faites une copie de la table avec les données en utilisant INSERT SELECT:

    CREATE TABLE backupTable LIKE originalTable; 
    INSERT backupTable SELECT * FROM originalTable;
    
  2. Supprimer les données de la table d'origine (pour supprimer les entrées en double):

    TRUNCATE TABLE originalTable;
    
  3. Pour ajouter AUTO_INCREMENT et PRIMARY KEY

    ALTER TABLE originalTable ADD id INT PRIMARY KEY AUTO_INCREMENT;
    
  4. Copier les données dans OriginalTable (ne pas inclure la nouvelle colonne (id), car elle sera automatiquement remplie)

    INSERT originalTable (col1, col2, col3) 
    SELECT col1, col2,col3
    FROM backupTable;
    
  5. Supprimer backupTable:

    DROP TABLE backupTable;
    

J'espère que c'est utile!

Plus sur la duplication de tables en utilisant CREATE LIKE:

Dupliquer une table MySQL, des index et des données

14
Arian Acosta
Alter table table_name modify column_name datatype(length) AUTO_INCREMENT PRIMARY KEY

Vous devez ajouter la clé primaire pour l'incrémentation automatique, sinon vous aurez une erreur dans mysql.

9
php

Il suffit simplement d'ajouter auto_increment Constraint In column ou MODIFY COLUMN: - 

 ALTER TABLE `emp` MODIFY COLUMN `id` INT NOT NULL UNIQUE AUTO_INCREMENT FIRST;

Ou ajoutez d'abord une colonne puis changez de colonne en tant que -

1. Alter TABLE `emp` ADD COLUMN `id`;

2. ALTER TABLE `emp` CHANGE COLUMN `id` `Emp_id` INT NOT NULL UNIQUE AUTO_INCREMENT FIRST;
4
Zigri2612

Cela a fonctionné pour moi au cas où vous voudriez changer l'attribut AUTO_INCREMENT pour une table non-vide:

1.) Exporté la table entière en fichier .sql
2.) Suppression du tableau après exportation
2.) La modification de la commande CREATE_TABLE était-elle nécessaire?
3.) Exécution des commandes CREATE_TABLE et INSERT_INTO à partir du fichier .sql
... et alto

3
walt

Alter table table_name modify table_name.column_name data_type AUTO_INCREMENT;

par exemple: 

Alter table avion modify avion.av int AUTO_INCREMENT;

0
Maria

J'ai réussi à faire cela avec le code suivant:

ALTER TABLE `table_name`
CHANGE COLUMN `colum_name` `colum_name` INT(11) NOT NULL AUTO_INCREMENT FIRST;

C’est la seule façon pour moi d’incrémenter automatiquement une colonne. 

INT (11) indique que la longueur maximale en int est 11, vous pouvez le sauter si vous le souhaitez. 

0
Fluch