102 votes

Comment ajouter AUTO_INCREMENT à une colonne existante ?

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

145voto

Don Kirkby Points 12671

Je pense que vous voulez MODIFY la colonne comme décrit pour le ALTER TABLE commande . Il pourrait s'agir de quelque chose comme ceci :

ALTER TABLE users MODIFY id INTEGER NOT NULL AUTO_INCREMENT;

Avant de procéder à l'exécution ci-dessus, assurez-vous que id possède un index primaire.

26voto

Arian Acosta Points 1796

Méthode pour ajouter AUTO_INCREMENT à une table avec données tout en évitant " Double entrée "erreur :

  1. Faire une copie du tableau avec les données à l'aide de INSERT SELECT :

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

    TRUNCATE TABLE originalTable;
  3. Pour ajouter AUTO_INCREMENT y CLÉ PRIMAIRE

    ALTER TABLE originalTable ADD id INT PRIMARY KEY AUTO_INCREMENT;
  4. Copier les données dans le tableau original (do no inclure la colonne nouvellement créée (id), puisqu'elle sera automatiquement remplie)

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

    DROP TABLE backupTable;

Plus d'informations sur la duplication des tables à l'aide de CREATE LIKE :

Duplication d'une table, d'index et de données MySQL

16voto

php Points 435
Alter table table_name modify column_name datatype(length) AUTO_INCREMENT PRIMARY KEY

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

9voto

Zigri2612 Points 1124

Il suffit d'ajouter la contrainte auto_increment dans la colonne ou de MODIFIER LA COLONNE :-

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

Ou ajouter d'abord une colonne, puis modifier la colonne comme -

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

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

4voto

walt Points 93

Cela a fonctionné pour moi dans le cas où vous souhaitez modifier l'attribut AUTO_INCREMENT pour une table non vide :

1) Exportation de l'ensemble de la table sous forme de fichier .sql
2) Suppression du tableau après l'exportation
2.) Changement nécessaire dans la commande CREATE_TABLE
3) Exécution des commandes CREATE_TABLE et INSERT_INTO du fichier .sql.
...et viola

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X