Un trigger (ou déclencheur) est un bloc PL/SQL associé à une table permettant de déclencher une action avant ou après un INSERT, UPDATE ou DELETE sur cette table.
Les triggers sont stockés dans la base.
Ils permettent de renforcer l'intégrité des données (mais on préférera des contraintes "check", "unique" ou "foreign key" quand c'est possible).
Ils permettent d'auditer des actions sur une table.
Ils permettent de calculer des valeurs dérivées pour d'autres colonnes de la table.
Ils constituent ainsi une des solutions pour l'implémentation des attributs dérivés.
Il existe deux types de triggers :
Trigger sur ligne
le trigger est exécuté pour chaque ligne concernée par l'instruction insert, update ou delete (option "for each row").
Trigger sur instruction
le trigger est exécuté une seule fois pour l'instruction insert, update ou delete, même si elle traite plusieurs lignes d'un coup.
CREATE [OR REPLACE] TRIGGER nom_trigger {BEFORE|AFTER}
[INSERT OR][UPDATE [OF nom_colonne] OR][DELETE]
ON nom_Table
[FOR EACH ROW [WHEN (condition)] ]
DECLARE
[variable declarations]
BEGIN
âinstructions
END;
Une même table peut avoir plusieurs triggers, mais cela est à éviter en général, pour des raisons de facilité de maintenance et de performance.
Si l'exécution du trigger échoue, l'action (insert, update ou delete dans la table) est annulée (et retourne une exception Oracle).