Avec MySql 5 on a vu arriver les Triggers. On est loin des trigger gérés sous Oracle mais c’est déjà un début.
Mais qu’est ce qu’un trigger ?
En bon français on pourrait traduire cela par déclencheur.
Donc un trigger, un déclencheur est un objet de base de données associé à une table, qui s’active lorsqu’un événement particulier survient.
Syntaxe :
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
Exemple :
Dans l’interface admin de wow-arena quand on rajoute un guide dans la table : wa_Guide, un nouveau tuple doit être insérer dans wa_GuideVote (table gérant les votes des visiteurs au niveau de chaque guide) avec comme idGuide l’id du guide qui a été ajouté.
Avec un trigger cela donne ceci :
CREATE TRIGGER voteGuideInsert AFTER INSERT ON wa_Guide
FOR EACH ROW
INSERT INTO wa_GuideVote (idGuide) VALUES (NEW.idGuide);
Vous allez me dire que si on supprime un guide il va rester un tuple inutile dans wa_GuideVote.
Et bien non ! :
CREATE TRIGGER voteGuideDelete AFTER DELETE ON wa_Guide
FOR EACH ROW
DELETE FROM wa_GuideVote WHERE idGuide = OLD.idGuide;
C’est quand même bien fait non ? Bon en Oracle il y aurait moyen de faire beaucoup mieux avec un joli WHEN et de regrouper les 2 triggers mais ce n’est pas encore possible dans MySql 5.0, esperons juste que cela sera possible dans les versions futur.
Liens :

