Ajout de plusieurs colonnes APRÈS une colonne spécifique dans MySQL

Je dois ajouter plusieurs colonnes à une table mais positionner les colonnes après une colonne appelée lastname.

J'ai essayé ceci :

ALTER TABLE `users` ADD COLUMN
(
    `count` smallint(6) NOT NULL,
    `log` varchar(12) NOT NULL,
    `status` int(10) unsigned NOT NULL
) 
AFTER `lastname`;

J'obtiens cette erreur :

Vous avez une erreur dans votre syntaxe SQL ; vérifiez le manuel qui correspond à la version de votre serveur MySQL pour connaître la bonne syntaxe à utiliser près de &#39 ;) AFTER lastname&#39 ; à la ligne 7


Comment puis-je utiliser AFTER dans une requête comme celle-ci ?

Solution

Essayez ceci

ALTER TABLE users
ADD COLUMN `count` SMALLINT(6) NOT NULL AFTER `lastname`,
ADD COLUMN `log` VARCHAR(12) NOT NULL AFTER `count`,
ADD COLUMN `status` INT(10) UNSIGNED NOT NULL AFTER `log`;

Vérifiez la [syntaxe][1]

[1] : http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

Commentaires (2)

Si vous souhaitez ajouter une seule colonne après un champ spécifique, la requête MySQL suivante devrait fonctionner :

ALTER TABLE users
    ADD COLUMN count SMALLINT(6) NOT NULL
    AFTER lastname

Si vous voulez ajouter plusieurs colonnes, vous devez utiliser la commande 'ADD&#39 ; à chaque fois pour une colonne. Voici la requête MySQL pour cela :

ALTER TABLE users
    ADD COLUMN count SMALLINT(6) NOT NULL,
    ADD COLUMN log VARCHAR(12) NOT NULL,
    ADD COLUMN status INT(10) UNSIGNED NOT NULL
    AFTER lastname

Point à noter

Dans la deuxième méthode, la dernière colonne ADD COLUMN devrait en fait être la première colonne que vous voulez ajouter à la table.

Par exemple : si vous voulez ajouter count, log, status dans l'ordre exact après lastname, alors la syntaxe serait en fait :

ALTER TABLE users
    ADD COLUMN log VARCHAR(12) NOT NULL AFTER lastname,
    ADD COLUMN status INT(10) UNSIGNED NOT NULL AFTER lastname,
    ADD COLUMN count SMALLINT(6) NOT NULL AFTER lastname
Commentaires (5)

Une possibilité serait de ne pas s'embêter à réordonner les colonnes dans la table et de la modifier simplement en ajoutant les colonnes. Ensuite, créez une vue qui présente les colonnes dans l'ordre que vous souhaitez - en supposant que l'ordre soit vraiment important. La vue peut être facilement modifiée pour refléter l'ordre que vous souhaitez. Comme je ne peux pas imaginer que l'ordre soit important pour les applications programmatiques, la vue devrait suffire pour les requêtes manuelles où il pourrait être important.

Commentaires (1)