Trigger en Mysql5

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 :

Bookmark and Share
Hervé — 23 mars 2007 @ 01:05 Filed under: Php / mySql

Pas de commentaire »

Pas encore de commentaire.

Flux RSS des commentaires de cet article. TrackBack URL

Laisser un commentaire