Alter table si elle existe, ou de créer n'est pas si
J'ai besoin d'exécuter un programme d'installation qui peut également être un programme de mise à jour.
L'installateur doit être en mesure de finir par avoir un certain schéma ou de la structure de la base de données mysql, peu importe si certains tableaux existé, a manqué un peu de colonnes, ou n'ont pas besoin d'être changé, parce que leur structure est jusqu'à ce jour.
Comment puis-je faire une combinaison élégante de ALTER
et CREATE
?
Je pensais il doit y avoir quelque chose comme "AJOUTER... SI... en Double"
Dire que j'ai le tableau A. Dans un client de la table a une colonne -A1, et qu'un autre client a le même tableau, mais avec la colonne A1 et de la colonne A2.
Je veux que ma commande sql pour faire à la fois des clients en table A trois colonnes : A1, A2, et A3.
Encore une fois, mon script est un fichier sql que je dump mysql.
Comment dois-je faire? Merci 🙂
OriginalL'auteur Alon_T | 2013-05-30
Vous devez vous connecter pour publier un commentaire.
MySQL
INFORMATION_SCHEMA
base de données à la rescousse:Plus d'informations:
Mise à JOUR:
Une autre option, éventuellement plus facile, est de supprimer la table existante et de re-créer un nouveau avec le nouveau schéma. Pour ce faire, vous avez besoin de:
Donc, dans le code SQL:
En fait la dernière étape, "Drop table temporaire.", vous pouvez ignorer pendant un certain temps. Juste au cas où, vous voulez avoir une sorte de sauvegarde de la vieille table, "juste au cas où".
Plus d'informations:
Je ne sais rien à propos de votre "programme d'installation", puisque vous n'avez pas donner toute l'information, mais, fondamentalement, vous avez deux options: (1) vous faites cela en une seule requête SQL, en utilisant
STORED PROCEDURE
, ou (2) vous utilisez un autre externe langage de programmation et de faire leIF
/ELSE
conditions.veuillez voir ma mise à jour ci-dessus
OriginalL'auteur GregD
Eh bien, si vous êtes en utilisant un codage de la langue:
si elle renvoie une valeur d'appel de l'alter appelez le créer
Ok, alors créer une base de données mysql fonction qui compte les résultats de
SHOW TABLES LIKE 'myTable'
, si 0 créer d'autre alter? Il y a beaucoup de documentation sur les fonctions de mysql.OriginalL'auteur We0