Quelle est la syntaxe pour supprimer une colonne dans une table MySQL, si cette colonne existe sur la version 4.0.18?
Réponses
Trop de publicités?Il n'y en a pas: Demande de fonctionnalité MySQL . Il suffit de vérifier l'existence en premier dans le client ou d'attraper l'erreur.
Cela n’est pas pris en charge au niveau de langue dans MySQL. Voici un moyen de contourner les méta-données MySQL information_schema dans la version 5.0+, mais cela ne résoudra pas votre problème dans la version 4.0.18.
drop procedure if exists schema_change;
delimiter ';;'
create procedure schema_change() begin
/* delete columns if they exist */
if exists (select * from information_schema.columns where table_name = 'table1' and column_name = 'column1') then
alter table table1 drop column `column1`;
end if;
if exists (select * from information_schema.columns where table_name = 'table1' and column_name = 'column2') then
alter table table1 drop column `column2`;
end if;
/* add columns */
alter table table1 add column `column1` varchar(255) NULL;
alter table table1 add column `column2` varchar(255) NULL;
end;;
delimiter ';'
call schema_change();
drop procedure if exists schema_change;
J'ai écrit des informations plus détaillées dans un article de blog .
Je me rends compte de ce fil est assez vieux maintenant, mais j'ai eu le même problème. C'était ma solution de base à l'aide de la base de données MySQL Workbench, mais il a bien fonctionné...
- obtenir un nouvel éditeur sql et exécuter AFFICHER les TABLES pour obtenir une liste de vos tables
- sélectionnez toutes les lignes, et choisissez copier dans le presse-papiers (sans guillemets) dans le menu contextuel
- coller la liste de noms dans un autre onglet de l'éditeur
- écrivez votre requête, c'est à dire de l'instruction ALTER TABLE
x
DÉPOSERa
; - faire quelques copier-coller, donc, vous vous retrouvez avec une requête distincte pour chaque table
- Choisir si le workbench devrait arrêter lorsqu'une erreur se produit
- Frappé d'exécuter et de regarder à travers le journal de sortie
toutes les tables qui avait la table qui n'ont pas toutes les tables qui n'ont pas l'aura montré qu'une erreur dans les logs
ensuite, vous pouvez trouver/remplacer " goutte a
' modifier 'AJOUTER une COLONNE b
INT NULL', etc et de les exécuter en toute chose de nouveau....
un peu maladroit, mais à la fin vous obtenez le résultat final, et vous pouvez contrôler/surveiller l'ensemble du processus et n'oubliez pas de vous sauver des scripts sql dans le cas où vous avez besoin de nouveau.