CREATETRIGGER

name

Le nom à donner au nouveau déclencheur. Il doit être distinct du nom de tout autre déclencheur pour la même table. Le nom ne peut pas être qualifié de schéma – le déclencheur hérite du schéma de sa table. Pour un déclencheur de contrainte, c’est également le nom à utiliser lors de la modification du comportement du déclencheur à l’aide de SET CONSTRAINTS.

BEFORE
AFTER
INSTEAD OF

Détermine si la fonction est appelée avant, après ou à la place de l’événement. Un déclencheur de contrainte ne peut être spécifié que comme AFTER.

event

Un des INSERT, UPDATE, DELETE, ou TRUNCATE ; ceci spécifie l’événement qui déclenchera le déclencheur. Plusieurs événements peuvent être spécifiés en utilisant OR.

Pour les événements UPDATE, il est possible de spécifier une liste de colonnes en utilisant cette syntaxe :

UPDATE OF column_name1 

Le déclencheur ne se déclenchera que si au moins une des colonnes listées est mentionnée comme cible de la commande UPDATE.

Les événementsINSTEAD OF UPDATE ne prennent pas en charge les listes de colonnes.

table

Le nom (éventuellement qualifié de schéma) de la table ou de la vue pour laquelle le déclencheur est destiné.

referenced_table_name

Le nom (éventuellement qualifié de schéma) d’une autre table référencée par la contrainte. Cette option est utilisée pour les contraintes à clé étrangère et n’est pas recommandée pour une utilisation générale. Elle ne peut être spécifiée que pour les déclencheurs de contraintes.

DEFERRABLE
NOT DEFERRABLE
INITIALEMENT IMMEDIATE
INITIALEMENT DEFERREE

Le timing par défaut du déclencheur. Voir la documentation CREATE TABLE pour plus de détails sur ces options de contraintes. Ceci ne peut être spécifié que pour les déclencheurs de contrainte.

FOR EACH ROW
FOR EACH STATEMENT

Ceci spécifie si la procédure de déclenchement doit être déclenchée une fois pour chaque ligne affectée par l’événement de déclenchement, ou juste une fois par instruction SQL. Si aucun des deux n’est spécifié, FOR EACH STATEMENT est la valeur par défaut. Les déclencheurs de contrainte peuvent uniquement être spécifiés FOR EACH ROW.

condition

Expression booléenne qui détermine si la fonction de déclenchement sera réellement exécutée. Si WHEN est spécifié, la fonction ne sera appelée que si la condition renvoie vrai. Dans les déclencheurs FOR EACH ROW, la condition WHEN peut faire référence aux colonnes des anciennes et/ou nouvelles valeurs de ligne en écrivant respectivement OLD.column_name ou NEW.column_name. Bien sûr, les déclencheurs INSERT ne peuvent pas faire référence à OLD et les déclencheurs DELETE ne peuvent pas faire référence à NEW.

Les déclencheurs INSTEAD OF ne prennent pas en charge les conditions WHEN.

En ce moment, les expressions WHEN ne peuvent pas contenir de sous-requêtes.

Notez que pour les déclencheurs de contraintes, l’évaluation de la condition WHEN n’est pas différée, mais se produit immédiatement après l’opération de mise à jour du rang. Si la condition n’évalue pas à true, alors le déclencheur n’est pas mis en file d’attente pour une exécution différée.

nom_de_fonction

Une fonction fournie par l’utilisateur qui est déclarée comme ne prenant aucun argument et retournant le type trigger, qui est exécutée lorsque le déclencheur se déclenche.

arguments

Une liste facultative d’arguments séparés par des virgules à fournir à la fonction lorsque le déclencheur est exécuté. Les arguments sont des constantes littérales de type chaîne. Des noms simples et des constantes numériques peuvent également être écrits ici, mais ils seront tous convertis en chaînes de caractères. Veuillez vérifier la description du langage d’implémentation de la fonction de déclenchement pour savoir comment accéder à ces arguments dans la fonction ; cela peut être différent des arguments normaux de la fonction.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.