J'ai besoin d'ajouter plusieurs colonnes à une table mais de positionner les colonnes after 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`;
Je reçois cette erreur:
Vous avez une erreur dans votre syntaxe SQL; Consultez le manuel correspondant à la version de votre serveur MySQL pour connaître la syntaxe à utiliser près de ') AFTER
lastname
' à la ligne 7.
Comment puis-je utiliser APRÈS dans une requête comme celle-ci?
Essaye ça
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érifier le syntaxe
Si vous souhaitez ajouter une seule colonne après un champ spécifique, la requête MySQL suivante devrait alors fonctionner:
ALTER TABLE users
ADD COLUMN count SMALLINT(6) NOT NULL
AFTER lastname
Si vous souhaitez ajouter plusieurs colonnes, vous devez utiliser la commande "AJOUTER" à 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
Dans la deuxième méthode, le dernier ADD COLUMN
colonne devrait en fait être la première colonne que vous souhaitez ajouter à la table.
E.g: si vous voulez ajouter count
, log
, status
dans l'ordre exact après lastname
, la syntaxe serait alors la suivante:
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
Vous ne pouvez pas mentionner plusieurs noms de colonne avec des virgules à l'aide de ADD COLUMN
. Vous devez mentionner ADD COLUMN
chaque fois que vous définissez une nouvelle colonne.
Celui-ci est correct:
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`;
ALTER TABLE `users` ADD COLUMN
`COLUMN NAME` DATATYPE(SIZE) AFTER `EXISTING COLUMN NAME`;
Vous pouvez le faire avec ça, en travaillant bien pour moi.
Une possibilité serait de ne pas se soucier de réorganiser les colonnes de la table et de simplement la modifier en ajoutant les colonnes. Créez ensuite une vue comportant les colonnes dans l’ordre que vous souhaitez, en supposant que l’ordre est vraiment important. La vue peut être facilement modifiée pour refléter l'ordre que vous souhaitez. Étant donné que je ne peux pas imaginer que l'ordre serait important pour les applications de programmation, la vue devrait suffire pour les requêtes manuelles où cela pourrait être important.
La solution qui a fonctionné pour moi avec la valeur par défaut 0 est la suivante
ALTER TABLE reservations ADD COLUMN isGuest BIT DEFAULT 0
Cela fonctionne bien pour moi:
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';