CREATE CONSTRAINT TRIGGER — Définir un nouveau déclencheur sur contrainte
CREATE CONSTRAINT TRIGGER nom AFTER événement [ OR ... ] ON table [ FROM table_référencée ] { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } } FOR EACH ROW [ WHEN ( condition ) ] EXECUTE PROCEDURE nom_fonction ( arguments )
CREATE CONSTRAINT TRIGGER crée un trigger de contrainte. C'est identique à un trigger standard sauf que le moment de l'exécution du trigger est ajustable en utilisant SET CONSTRAINTS(7). Les triggers de contraintes doivent être des triggers AFTER ROW. Ils peuvent être déclenchés soit à la fin de l'instruction l'ayant déclenché soit à la fin de la transaction le contenant ; dans ce dernier cas, ils sont dit déferrés (deferred). Le déclenchement d'un tigger déferré en attente peut voir son exécution forcée en utilisant SET CONSTRAINTS.
Le nom du trigger de contrainte. C'est aussi le nom à utiliser pour modifier le comportement du trigger en utilisant SET CONSTRAINTS. Le nom ne peut pas être qualifié du schéma -- le trigger hérite du schéma de sa table.
Une valeur parmi INSERT, UPDATE ou DELETE ; ceci indique l'événement qui sera la cause de l'exécution du déclencheur. Plusieurs événements peuvent être indiqués en utilisant le mot clé OR.
Le nom (éventuellement qualifié du nom du schéma) de la table dans laquelle se déroulent les événements déclenchant.
Le nom d'une autre table (parfois qualifié du nom du schéma) référencée par la contrainte. Cette option est utilisée pour les contraintes de type clé étrangère et n'est pas recommandée pour un usage général.
Le moment d'exécution par défaut du trigger. Voir la documentation de CREATE TABLE(7) pour les détails sur ces options de contraintes.
Une expression booléenne déterminant si la fonction trigger sera en fait exécutée. Ceci agit de la même façon que CREATE TRIGGER(7). Notez en paticulier que l'évaluation de la condition WHEN n'est pas déferrée, mais survient immédiatement après l'opération de mise à jour de la ligne. Si la condition n'évalue pas à true, alors le trigger n'est pas mis en queue pour une exécution déferrée.
La fonction à appeler quand le trigger est déclenché. Voir CREATE TRIGGER(7) pour les détails.
Chaînes optionnelles d'argument à passer à la fonction trigger. Voir CREATE TRIGGER(7) pour plus de détails.