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`;
Je reçois cette erreur:
Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à la version de votre serveur MySQL pour la bonne syntaxe à utiliser près de ') APRÈS
lastname
' à la ligne 7
Comment puis-je utiliser AFTER dans une requête comme celle-ci?
ALTER TABLE
syntaxe varie un peu entre les dialectes.Réponses:
Essaye ça
vérifier la syntaxe
la source
ADD
,ALTER
,DROP
et lesCHANGE
clauses sont autorisés dans une seuleALTER TABLE
déclaration, séparés par des virgules. Il s'agit d'une extension MySQL de SQL standard, qui autorise une seule de chaque clause par instruction ALTER TABLE.Si vous souhaitez ajouter une seule colonne après un champ spécifique, la requête MySQL suivante devrait fonctionner:
Si vous souhaitez ajouter plusieurs colonnes, vous devez utiliser la commande 'ADD' à chaque fois pour une colonne. Voici la requête MySQL pour cela:
À noter
Dans la deuxième méthode, la dernière
ADD COLUMN
colonne doit en fait être la première colonne que vous souhaitez ajouter au tableau.Par exemple: si vous voulez ajouter
count
,log
,status
dans l'ordre exact aprèslastname
, la syntaxe serait en fait:la source
count
,log
,status
oucount
,status
,log
?Vous ne pouvez pas mentionner plusieurs noms de colonne avec des virgules à l'aide de
ADD COLUMN
. Vous devez mentionnerADD COLUMN
chaque fois que vous définissez une nouvelle colonne.la source
Celui-ci est correct:
la source
Vous pouvez le faire avec ça, ça marche bien pour moi.
la source
Une possibilité serait de ne pas se soucier de réorganiser les colonnes dans le tableau et de simplement le modifier en ajoutant les colonnes. Ensuite, créez une vue qui a les colonnes dans l'ordre souhaité - en supposant que l'ordre est vraiment important. La vue peut être facilement modifiée pour refléter toute commande que vous souhaitez. Comme je ne peux pas imaginer que l'ordre serait important pour les applications programmatiques, la vue devrait suffire pour les requêtes manuelles où elle pourrait être importante.
la source
Cela donnera de bons résultats.
la source
Cela fonctionne bien pour moi:
la source
La solution qui a fonctionné pour moi avec la valeur par défaut 0 est la suivante
la source
Alternativement:
Les mettra dans l'ordre que vous souhaitez tout en rationalisant l'instruction AFTER.
la source