Je me demande s'il est possible de mettre à jour une définition de déclencheur dans MySQL. Par exemple, j'ai un déclencheur T et je veux lui ajouter de nouvelles fonctionnalités.
Mon hypothèse est que je dois le supprimer et le recréer.
Quelles sont les meilleures pratiques d'administration de la base de données pour de tels scénarios?
Réponses:
On dirait que vous demandez s'il est possible de modifier un déclencheur dans une opération atomique, où, si la nouvelle définition échoue, vous ne perdez pas l'ancienne ... similaire à
CREATE OR REPLACE VIEW
, qui remplace la définition de la vue si la nouvelle définition est valide, mais laisse l'ancien en place, si vous ne pouvez pas le remplacer.Malheureusement, il n'y en a pas
ALTER TRIGGER
ouCREATE OR REPLACE TRIGGER
dans MySQL.Je suggérerais que la meilleure pratique consiste à verrouiller la table où se trouve le déclencheur, de sorte qu'aucune ligne ne soit affectée avec le déclencheur absent. La suppression et l'ajout de déclencheurs lorsqu'une table est verrouillée est autorisé.
Mise à jour: MariaDB, dans la version 10.1.4, a ajouté la prise
CREATE OR REPLACE TRIGGER
en charge de leur remplacement direct pour MySQL.https://mariadb.com/kb/en/mariadb/create-trigger/
MySQL d'Oracle à partir de 5.7 repose toujours sur la solution ci-dessus.
la source