CREATE TRIGGER

Nom

CREATE TRIGGER -- d�finit un nouveau d�clencheur

Synopsis

CREATE TRIGGER nom { BEFORE | AFTER } { evenement [ OR ... ] }
    ON table [ FOR [ EACH ] { ROW | STATEMENT } ]
    EXECUTE PROCEDURE nomfonc ( arguments )

Description

CREATE TRIGGER cr�e un nouveau d�clencheur. Le d�clencheur sera associ� avec la table sp�cifi�e et ex�cutera la fonction sp�cifi�e nomfonc lorsque certains �v�nements surviennent.

Le d�clencheur peut �tre sp�cifi� pour �tre lanc� soit avant que l'op�ration ne soit tent�e sur une ligne (avant la v�rification des contraintes et que l'INSERT, l'UPDATE ou le DELETE ne soit tent�) ou une fois que l'op�ration s'est termin�e (apr�s la v�rification des contraintes et que l'INSERT, l'UPDATE ou le DELETE ne soit termin�). Si le d�clencheur est lanc� avant l'�v�nement, le d�clencheur pourrait annuler l'op�ration pour la ligne courante ou modifier la ligne en cours d'insertion (seulement pour les op�rations INSERT et UPDATE). Si le d�clencheur se lance apr�s l'�v�nement, toute modification, incluant la derni�re insertion, mise � jour ou suppression, sont <<�visibles�>> par le d�clencheur.

Un d�clencheur qui est marqu� FOR EACH ROW est appel� pour chaque ligne que l'op�ration modifie. Par exemple, un DELETE affectant dix lignes causera le lancement de tout d�clencheur ON DELETE sur la relation cible dix fois s�par�ment, une fois pour chaque ligne supprim�e. Au contraire, un d�clencheur marqu� FOR EACH STATEMENT s'ex�cute seulement une fois pour toute op�ration donn�e, quelque soit le nombre de lignes qu'il modifie (en particulier, une op�ration qui ne modifie aucune ligne, r�sultera toujours en l'ex�cution des d�clencheurs FOR EACH STATEMENT applicables).

Si plusieurs d�clencheurs du m�me genre sont d�finis pour le m�me �v�nement, ils sont d�clench�s suivant l'ordre alphab�tique de leur nom.

SELECT ne modifie aucune ligne donc vous ne pouvez pas cr�er de d�clencheurs SELECT. Les r�gles et vues sont plus appropri�es dans de tels cas.

R�f�rez-vous � Chapitre 32 pour plus d'informations sur les d�clencheurs.

Param�tres

nom

Le nom � donner au nouveau d�clencheur. Il doit �tre distinct du nom de tout autre d�clencheur pour la m�me table.

BEFORE
AFTER

D�termine si la fonction est appel�e avant ou apr�s l'�v�nement.

�v�nement

Fait partie de INSERT, UPDATE ou DELETE ; ceci sp�cifie l'�v�nement qui lance le d�clencheur. Plusieurs �v�nements peuvent �tre donn�s en utilisant OR.

table

Le nom (pouvant �tre qualifi� du nom du sch�ma) de la table � laquelle est rattach� le d�clencheur.

FOR EACH ROW
FOR EACH STATEMENT

Ceci sp�cifie si la proc�dure du d�clencheur doit �tre lanc�e une fois pour chaque ligne affect�e par l'�v�nement du d�clencheur ou simplement une fois par instruction SQL. Si rien n'est indiqu�, FOR EACH STATEMENT est la valeur par d�faut.

nomfonc

Une fonction fournie par l'utilisateur, d�clar�e comme ne prenant aucun argument et renvoyant le type trigger, qui est ex�cut�e lorsque le d�clencheur est lanc�.

arguments

Une liste optionnelle d'arguments s�par�s par des virgules � fournir � la fonction lors le d�clencheur est ex�cut�. Les arguments sont des constantes litt�rales de cha�nes. Des noms simples et des constantes num�riques peuvent �tre �crits ici aussi mais ils seront tous convertis en cha�ne. Merci de v�rifier la description du langage d'impl�mentation de la fonction d�clencheur sur la fa�on dont les arguments du d�clencheur sont accessibles � l'int�rieur d'une fonction ; cela pourrait �tre diff�rents des arguments de fonctions standards.

Notes

Pour cr�er un d�clencheur sur une table, l'utilisateur doit poss�der le droit TRIGGER sur la table.

Dans les versions de PostgreSQL ant�rieures � la 7.3, il �tait n�cessaire de d�clarer que les fonctions d�clencheur renvoyaient un type opaque, plut�t que trigger. Pour supporter le chargement des anciens fichiers de sauvegarde, CREATE TRIGGER acceptera qu'une fonction d�clare une valeur de retour de type opaque mais il affichera un message d'avertissement et modifiera le type de retour d�clar� de la fonction par trigger.

Utilisez DROP TRIGGER pour supprimer un d�clencheur.

Exemples

Section 32.4 contient un exemple complet.

Compatibilit�

L'instruction CREATE TRIGGER de PostgreSQL impl�mente un sous-ensemble du standard SQL:1999. (Il n'existe rien sur les d�clencheurs dans SQL-92.) Les fonctionnalit�s manquantes sont :

SQL:1999 sp�cifie que les d�clencheurs multiples devraient �tre lanc�s dans l'ordre de leur cr�ation. PostgreSQL utilise l'ordre alphab�tique de leur nom, ce qui a �t� jug� plus agr�able � utiliser.

La capacit� � sp�cifier plusieurs actions pour un simple d�clencheur en utilisant OR est une extension PostgreSQL du standard SQL.

Voir aussi

CREATE FUNCTION, ALTER TRIGGER, DROP TRIGGER