NEW.animal_id vaudra 15 ;
NEW.date_reservation vaudra NOW() ;
NEW.date_adoption vaudra NULL ;
NEW.prix vaudra 200.00 ;
NEW.paye vaudra FALSE (0).
Les valeurs de OLD ne seront pas définies.
Dans le cas d'une suppression, on aura exactement l'inverse.
Second exemple : la modification d'une ligne.
On modifie la ligne que l'on vient d'insérer en exécutant la commande suivante :
Code : SQL
UPDATE Adoption
SET paye = TRUE
WHERE client_id = 12 AND animal_id = 15;
Pendant le traitement de cette ligne par le trigger correspondant,
NEW.paye vaudra TRUE, tandis que OLD.paye vaudra FALSE.
Par contre les valeurs respectives de NEW.animal_id, NEW.client_id, NEW.date_reservation,
NEW.date_adoption et NEW.prix seront les mêmes que OLD.animal_id, OLD.client_id,
OLD.date_reservation, OLD.date_adoption et OLD.prix, puisque ces colonnes ne sont pas modifiées par
la requête.
Dans le cas d'une insertion ou d'une modification, si un trigger peut potentiellement changer la valeur de
NEW.colonne, il doit être exécuté avant l'événement (BEFORE). Sinon, la ligne aura déjà été insérée ou modifiée, et la
modification de NEW.colonne n'aura plus aucune influence sur celle-ci.
Erreur déclenchée pendant un trigger
Si un trigger BEFORE génère une erreur (non interceptée par un gestionnaire d'erreur), la requête ayant déclenché le
trigger ne sera pas exécutée. Si l'événement devait également déclencher un trigger AFTER, il ne sera bien sûr pas non
plus exécuté.
Si un trigger AFTER génère une erreur, la requête ayant déclenché le trigger échouera.
Dans le cas d'une table transactionnelle, si une erreur est déclenchée, un ROLLBACK sera fait. Dans le cas d'une table
non-transactionnelle, tous les changements qui auraient été faits par le (ou les) trigger(s) avant le déclenchement de
l'erreur persisteront.
Suppression des triggers
Encore une fois, la commande DROP permet de supprimer un trigger.
Code : SQL
DROP TRIGGER nom_trigger;
Tout comme pour les procédures stockées, il n'est pas possible de modifier un trigger. Il faut le supprimer puis le recréer
différemment.
Par ailleurs, si l'on supprime une table, on supprime également tous les triggers qui y sont attachés.
Exemples
Contraintes et vérification des données
Vérification du sexe des animaux
Partie 5 : Sécuriser et automatiser ses actions
313/414
www.openclassrooms.com
Précédent

- 313/413

Suivant