Question

Je suis en train de modifier une table pour rendre sa colonne clé primaire AUTO_INCREMENT après le fait. J'ai essayé l'instruction SQL suivante, mais a obtenu une notification d'erreur de syntaxe.

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

Ai-je fait quelque chose de mal ou est-ce pas possible?

+--------------------+
| VERSION()          |
+--------------------+
| 5.0.75-0ubuntu10.2 |
+--------------------+
Était-ce utile?

La solution

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

Autres conseils

Roman est juste, mais notez que la colonne auto_increment doit faire partie de la clé primaire ou une clé unique (et dans presque 100% des cas, il devrait être la seule colonne qui fait la clé primaire):

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY

Dans mon cas, il ne fonctionnait quand je mets not null. Je pense que cela est une contrainte.

ALTER TABLE document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT;

Le SQL pour ce faire serait:

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

Il y a deux raisons pour lesquelles votre SQL pourrait ne pas fonctionner. Tout d'abord, vous devez re-spécifier le type de données (INT dans ce cas). En outre, la colonne que vous essayez de modifier doit être indexé (il ne doit pas être la clé primaire, mais en général qui est ce que vous voulez). De plus, il ne peut y avoir une colonne de AUTO_INCREMENT pour chaque table. Ainsi, vous pouvez exécuter l'instruction SQL suivante (si votre colonne est pas indexé):

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

Vous pouvez trouver plus d'informations dans la documentation MySQL: http: //dev.mysql.com/doc/refman/5.1/en/alter-table.html pour la syntaxe de la colonne et modifier http://dev.mysql.com/doc/refman/5.1/en/create-table.html pour plus d'informations sur la spécification des colonnes.

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

ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT

(int pris comme exemple, vous devez régler le type de la colonne avait avant)

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

Vous pouvez le faire comme ceci:

 alter table [table_name] modify column [column_name] [column_type] AUTO_INCREMENT;

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

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT

(int pris comme exemple, vous devez définir au type de la colonne avait avant)

Vous pouvez utiliser la requête suivante pour faire document_id pour incrémenter automatiquement

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

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

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment PRIMARY KEY;

Voici les travaux de déclaration. Notez que vous devez mentionner à nouveau le type de données pour le nom de la colonne (redéclarer le type de données de la colonne était avant).

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT;

Si aucun des travaux ci-dessus essayer. Voilà ce que je l'ai fait dans MYSQL et oui, vous avez besoin d'écrire le nom de colonne (document_id) deux fois.

ALTER TABLE document
CHANGE COLUMN document_id document_id INT(11) NOT NULL AUTO_INCREMENT ;

Pour modifier la colonne dans une base MySQL, nous utilisons modifier et modifier les mots clés. Supposons que nous avons créé une table comme:

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

Maintenant, nous voulons modifier le type de l'identifiant de la 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;

Syntaxe précédente Table:

CREATE TABLE apim_log_request (TransactionId varchar(50) DEFAULT NULL);

Pour changer le TransactionId à l'utilisation d'incrémentation automatique cette requête

ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT auto_increment;
alter table tbl_user MODIFY COLUMN id int(10) auto_increment;

Tout comme ceci:

alter table document modify column id int(11) auto_increment;

Comme vous redéfinissez la colonne à nouveau, vous devez spécifier le type de données à nouveau et ajouter auto_increment à lui comme il est une partie de type de données.

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

Réglage 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>

ALTER TABLE table_name MODIFIER LA COLONNE id auto_increment type de données;

Utilisez les requêtes suivantes:

ALTER TABLE YourTable DROP COLUMN IDCol

ALTER TABLE YourTable ADD IDCol INT IDENTITY(1,1)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top