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 | + -------------------- +
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 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
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 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)
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
.
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.
Vous pouvez le faire comme ça:
alter table [table_name] modify column [column_name] [column_type] AUTO_INCREMENT;
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;
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;
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 ;
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)
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;
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;
alter table tbl_user MODIFY COLUMN id int(10) auto_increment;
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;
ALTER TABLE nom_table MODIFY COLUMN id type de données auto_increment;
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>