Partie II
Programmation procédurale
264
© Éditions Eyrolles
CREATE TRIGGER nomDéclencheur
{ BEFORE | AFTER } { DELETE | INSERT | UPDATE }
ON nomTable
FOR EACH ROW
{ instruction; |
[etiquette:] BEGIN
instructions;
END [etiquette]; }
Les options de cette commande sont les suivantes :
q
BEFORE | AFTER précise la chronologie entre l’action à réaliser par le déclencheur LMD et
la réalisation de l’événement (BEFORE INSERT exécutera le déclencheur avant de réaliser
l’insertion).
q
DELETE | INSERT | UPDATE précise la nature de l’événement pour les déclencheurs LMD.
– Pour DELETE, le déclencheur examine les événements DELETE et REPLACE.
– Pour INSERT, le déclencheur prend en compte les événements suivants : INSERT,
CREATE... SELECT, LOAD DATA, et REPLACE.
– Pour UPDATE, le déclencheur considère seulement l’événement UPDATE.
q
ON nomTable spécifie la table associée au déclencheur LMD.
q
FOR EACH ROW différencie les déclencheurs LMD au niveau ligne (le niveau état n’est
pas encorepris en charge).
q
instruction ou instructions compose le corps du code du déclencheur.
Il n’est pas possible de définir deux déclencheurs distincts sur le même événement d’une table
donnée. En revanche, il est possible d’avoir deux déclencheurs distincts sur la même action,
dans une table donnée (un déclencheur pour BEFORE UPDATE et un autre pour AFTER UPDATE
par exemple).
Attention à ne pas créer de déclencheurs recursifs (exemple d’un déclencheur qui exécute une
instruction lançant elle-même le déclencheur, ou deux déclencheurs s’appelant en cascade
jusqu’à l’occupation de toute la mémoire réservée).
Étudions à présent plus précisément les caractéristiques du seul type de déclencheur qu’il est
actuellement possible de programmer.
Déclencheurs LMD (de lignes)
Pour ce type de déclencheur, l’événement à déterminer est une mise à jour particulière de la
base (ajout, modification ou suppression dans une table ou une vue).
Précédent

- 286/418

Suivant