Déclencheurs
Un déclencheur est une fonction spéciale qui est appelée sur un événement INSERT, UPDATE ou DELETE sur une table. N’importe quel langage de procédures stockées permet d’écrire ces fonctions et elles peuvent être mises en place par la commande CREATE TRIGGER :
CREATE TRIGGER nom
{ BEFORE | AFTER | INSTEAD OF }
{ INSERT | UPDATE [ OF colonne [, ...]]
| DELETE | TRUNCATE [ OR ... ] }
ON table
[ FOR [ EACH ] { ROW | STATEMENT } ]
WHEN ( condition )
EXECUTE PROCEDURE nomfonc ( arguments )
Un déclencheur s’utilise avant, après ou à la place d’un événement et peut être utilisé sur chaque ligne concernée ou une seule fois par opération avec l’option FOR EACH STATEMENT.
Une fonction de déclencheur n’a généralement pas de paramètres en entrée et retourne un type de données trigger.
1. Code PL/pgSQL
Lorsque une fonction trigger est écrite en PL/pgSQL, quelques variables sont implicitement définies, afin de connaître le contexte d’utilisation de la fonction. Les variables implicites sont les suivantes :
-
TG_WHEN : moment du déclenchement : AFTER ou BEFORE, soit avant ou après l’ordre SQL déclenchant l’appel de la fonction.
-
TG_OP : opération INSERT, UPDATE...