Académique Documents
Professionnel Documents
Culture Documents
1
DÉCLENCHEUR (TRIGGER)
🞆 C'est un traitement implicite déclenché par un événement.
2
CARACTÉRISTIQUES D'UN TRIGGER
🞆 Son code est stocké dans la base de données.
3
DESCRIPTION D'UN TRIGGER
🞆 Le traitement peut s'appliqué :
⚫ À l'ordre
🞆Le trigger ne s'applique qu'une fois
4
STRUCTURE D'UN DÉCLENCHEUR
🞆 Événement
Ordre
BEFORE
ROW
INSERT
UPDATE Table
AFTER DELETE
5
LES VARIABLES DE LIEN
🞆 Lors de la création de triggers lignes, il est possible d’avoir accès à la valeur
ancienne et la valeur nouvelle grâce aux mots clés OLD et NEW.
🞆 Il n’est pas possible d’avoir accès à ces valeurs dans les triggers de table.
7
ELÉMENTS CONSTITUTIFS
1 CREATE OR REPLACE TRIGGER myFirstTrigger
2 BEFORE UPDATE OF ename ON emp
3 FOR EACH ROW
4 BEGIN
6 DBMS_OUTPUT.PUT_LINE(:NEW.ENAME|| ‘ ‘ ||:OLD.ENAME);
7 EXCEPTION
8 WHEN OTHERS THEN
9 DBMS_OUTPUT.PUT_LINE(SQLERRM);
10 END;
8
RÉSOLUTION MULTI-ÉVÉNEMENTS
9
RÉSOLUTION MULTI-ÉVÉNEMENTS
CREATE OR REPLACE TRIGGER myFirstTrigger
AFTER UPDATE OR INSERT ON emp
FOR EACH ROW
BEGIN
IF INSERTING THEN
DBMS_OUTPUT.PUT_LINE(' INSERT ');
END IF;
IF UPDATING('ENAME') THEN
DBMS_OUTPUT.PUT_LINE(' UPDATED ' || :NEW.ENAME);
END IF;
END;
/
SQL> UPDATE emp SET ename = 'TOTO' WHERE empno = 7839;
UPDATED TOTO
1 row updated.
10
TYPOLOGIE D'UN TRIGGER
BEFORE AFTER
BEFORE UPDATE ligne AFTER UPDATE ligne
BEFORE DELETE ligne AFTER DELETE ligne
BEFORE INSERT ligne AFTER INSERT ligne
BEFORE UPDATE ordre AFTER UPDATE ordre
BEFORE DELETE ordre AFTER DELETE ordre
BEFORE INSERT ordre AFTER INSERT ordre
11
MISE HORS-SERVICE D'UN TRIGGER
13