automatiquement lorsqu’une condition se trouve satisfaite après l’apparition d’un évènement.
Un déclencheur suit la règle ECA :
E: Evènement : mise à jour, suppression, insertion C : Condition : expression logique vraie ou fausse. A : Action : procédure exécutée lorsque la condition est vérifiée. Maintien des contraintes d’intégrité. Propagation des mises à jour dans une bases de données distribuées. Sécurité. CREATE [OR REPLACE] TRIGGER nom_Trigger {BEFORE|AFTER|INSTEAD OF} //évènement {INSERT |DELETE|UPDATE [OF liste de données] ON table [FOR EACH ROW] [WHEN (condition de déclenchement)]//condition DECLARE --Déclarations variables, curseurs… BEGIN --Traitement EXCEPTION --Gestionnaire d’exceptions END [nom_Trigger]; Ecrire un déclencheur qui affiche un message lorsque des n- uplets sont supprimés de la table CHERCHEUR.
CREATE OR REPLACE TRIGGER TRG_DEL_CHERCH
AFTER DELETE ON CHERCHEUR BEGIN Dbms_output.put_line (‘TRG_DEL_CHERCH déclenché’); END TRG_DEL_CHERCH; Ecrire un déclencheur qui supprime toutes les commandes d’un client avant sa suppression.
CREATE TRIGGER suppclient
BEFORE DELETE ON Client FOR EACH ROW BEGIN DELETE FROM COMMANDE WHERE Codcli = :old.Codcli; END suppclient; Dans les triggers de tuples ( FOR EACH ROW), on peut manipuler les valeurs traitées, directement en mémoire : :old.attribut : ancienne valeur (DELETE | Update) :new.attribut : nouvelle valeur (INSERT| UPDATE). Exemple : Trigger pour la suppression et sauvegarde dans une table de journal.
CREATE OR REPLACE TRIGGER suppression_ligne
BEFORE DELETE ON produit FOR EACH ROW BEGIN INSERT INTO journal VALUES (:old.codprod, :old.libelle, :old.qte); END suppression_ligne; -- END: aussi juste. Lorsqu’un trigger est lancé sur un serveur et qui se termine sans traitement d’exception, l’évènement qui l’a déclenché se poursuit correctement. Deux types de triggers peuvent être définis : Trigger d’énoncé : lancé une seule fois. Trigger de tuples : exécuté autant de fois qu’il y a des tuples à insérer, à modifier ou à supprimer. Par défaut, un trigger est actif, il peut être désactivé.