L3 Info : SGBD
 
◃  Ch. 12 Oracle PL/SQL  ▹
 

Procédures déclenchées (Triggers)

  • Un trigger est une fonction qui doit être éxécutée lorsque certaines opérations sont réalisées.
  • Ces déclenchements peuvent avoir lieu avant ou après un INSERT, un UPDATE ou un DELETE.
  • Pour une requête SQL modifiant plusieurs enregistrements simultanément, la clause FOR EACH ROW détermine le déclenchement du trigger pour chaque enregistrement ou pour l'ensemble des lignes modifiées.
  • :OLD et :NEW sont des variables (des enregistrements) qui donnent accès aux deux états des données en cours de modification.
  • INSERTING, UPDATINGet DELETING sont des variables booléennes indiquant l'opération ayant déclenchée le trigger.
  • Il est possible de contrôler les conditions d'exécution avec des clauses telles que IF INSERTING THEN ... ELSIF UPDATING THEN ... ELSIF DELETING THEN ...
  • Syntaxe générale :
    CREATE [OR REPLACE] TRIGGER nom_du_trigger
    {BEFORE | AFTER | INSTEAD OF}
    {INSERT | UPDATE [OF colonne] | DELETE}
    ON nom_table
    [FOR EACH ROW]
    [WHEN (condition)]
    DECLARE
        -- Déclarations locales (facultatif)
    BEGIN
        -- Bloc PL/SQL exécuté quand le trigger se déclenche
    EXCEPTION
        -- Gestion des erreurs (facultatif)
    END;
    /