J'essaie d'écrire une requête qui vérifiera si une table spécifique dans MySQL a une colonne spécifique, et si non - la créer. Sinon, elle ne fait rien. Il s'agit d'une procédure très simple dans toute base de données d'entreprise, mais MySQL semble être une exception.
Je pensais que quelque chose comme
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='prefix_topic' AND column_name='topic_last_update')
BEGIN
ALTER TABLE `prefix_topic` ADD `topic_last_update` DATETIME NOT NULL;
UPDATE `prefix_topic` SET `topic_last_update` = `topic_date_add`;
END;
fonctionnerait, mais il échoue gravement. Existe-t-il un moyen ?
1 votes
Voir ceci : cryer.co.uk/brian/mysql/howto_add_column_unless_exists.htm
0 votes
Pourquoi ne pas simplement le créer ? Si elle existe, la création échouera mais vous ne vous en souciez pas.
0 votes
La création a lieu à l'intérieur d'une transaction et l'échec mettra fin à l'ensemble de la transaction, triste mais vrai.
0 votes
@haim - merci pour le renseignement, mais la requête proposée dans votre lien ne fonctionne que dans une procédure :(
2 votes
Les instructions DDL provoquent un commit implicite dans la transaction courante. dev.mysql.com/doc/refman/5.0/fr/implicit-commit.html