web-dev-qa-db-fra.com

Ajouter un ID d’incrémentation automatique à la table existante?

J'ai une table préexistante contenant 'fname', 'lname', 'email', 'password' et 'ip'. Mais maintenant, je veux une colonne à incrémentation automatique. Cependant, quand j'entre:

ALTER TABLE users
ADD id int NOT NULL AUTO_INCREMENT

Je reçois ce qui suit:

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

Aucun conseil?:)

54
Charles Jenkins

Essaye ça 

ALTER TABLE `users` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
96

Si vous ne vous souciez pas de savoir si l'identifiant automatique est utilisé comme PRIMARY KEY, vous pouvez simplement le faire.

ALTER TABLE `myTable` ADD COLUMN `id` INT AUTO_INCREMENT UNIQUE FIRST;

Je viens de faire cela et cela a fonctionné un régal.

58
Coderer

Si vous souhaitez ajouter AUTO INCREMENT dans une table existante, vous devez exécuter la commande SQL suivante:

 ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT primary key
23
Bhaskar Bhatt

Vous devez d'abord supprimer la clé primaire de la table

ALTER TABLE nametable DROP PRIMARY KEY

et maintenant vous pouvez ajouter l'autocrément ...

ALTER TABLE nametable ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
20
jrltt

Eh bien, vous devez d'abord supprimer les auto_increment et primary key que vous avez puis ajouter le vôtre, comme suit:

-- drop auto_increment capability
alter table `users` modify column id INT NOT NULL;
-- in one line, drop primary key and rebuild one
alter table `users` drop primary key, add primary key(id);
-- re add the auto_increment capability, last value is remembered
alter table `users` modify column id INT NOT NULL AUTO_INCREMENT;
14
echo_Me

Supprimez la clé primaire d'une table si elle existe:

 ALTER TABLE `tableName` DROP PRIMARY KEY;

Ajouter une colonne à incrémentation automatique à une table:

ALTER TABLE `tableName` ADD `Column_name` INT PRIMARY KEY AUTO_INCREMENT;

Modifiez la colonne que nous voulons considérer comme clé primaire:

alter table `tableName` modify column `Column_name` INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
4
Sunny Verma

Il suffit de changer le AJOUTER à MODIFIER et cela fonctionnera!

Remplacer 

ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT

À 

ALTER TABLE users MODIFY id int NOT NULL AUTO_INCREMENT;
3
John Joe
ALTER TABLE users CHANGE id int( 30 ) NOT NULL AUTO_INCREMENT

le paramètre entier est basé sur mon paramètre SQL par défaut passez une bonne journée

2
Odhik Susanto

Si vous exécutez la commande suivante:

ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT PRIMARY KEY;

Cela va vous montrer l'erreur:

ERROR 1060 (42S21): Duplicate column name 'id'

En effet, cette commande essaiera d’ajouter la nouvelle colonne nommée id à la table existante.

Pour modifier la colonne existante, vous devez utiliser la commande suivante:

ALTER TABLE users MODIFY id int NOT NULL AUTO_INCREMENT PRIMARY KEY;

Cela devrait fonctionner pour changer la contrainte de colonne existante ....!

2
Rajat Dabade
ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT primary key FIRST
2
php

Recherchez les clés primaires déjà existantes avec une colonne différente. Si oui, supprimez la clé primaire en utilisant: 

ALTER TABLE Table1
DROP CONSTRAINT PK_Table1_Col1
GO

puis écrivez votre requête telle qu'elle est.

0
user3100184
ALTER TABLE `table` ADD `id` INT NOT NULL AUTO_INCREMENT unique

Essaye ça. Pas besoin de laisser tomber votre clé primaire.

0
刘斌文