Prédicats d'événement au sein des triggers
INSERTING
DELETING
UPDATING
UPDATING(nom_colonne)
Prédicats pour savoir dans quel contexte d'appel du trigger on est, ce qui permet dans un même trigger de s'adapter aux différents cas de déclenchement.
Rappel : BD "Gestion des intervenants" : Schéma relationnel
1
tIntervenant (#pknom:varchar, prenom:varchar, poste:integer)
2
tCours (#pkannee:2000..2100, #pknum:integer, titre:varchar, type:C|TD|TP, fkintervenant=>tIntervenant, debut:date)
Exemple : BD "Gestion des intervenants" : Trigger d'archivage de données
1
CREATE TABLE tIntervenantSav (
2
pknom varchar2(20) PRIMARY KEY,
3
prenom varchar2(20) NOT NULL
4
);
5
6
CREATE OR REPLACE TRIGGER trIntervenant
7
BEFORE DELETE OR INSERT ON tIntervenant
8
FOR EACH ROW
9
BEGIN
10
IF DELETING THEN
11
INSERT INTO tIntervenantSav VALUES (:old.pknom, :old.prenom);
12
ELSIF INSERTING THEN
13
DELETE FROM tIntervenantSav WHERE pknom = :new.pknom;
14
END IF;
15
END;
16
/
17
18
DELETE FROM tCours;
19
DELETE FROM tIntervenant;
20
SELECT * FROM tIntervenantSav;
1
PKNOM PRENOM
2
-------------------- --------------------
3
CROZAT Stéphane
4
JOUGLET Antoine
5
VINCENT Antoine
1
INSERT INTO tIntervenant (pknom, prenom, poste)
2
VALUES ('CROZAT', 'Stéphane', '4287');
3
4
SELECT * FROM tIntervenantSav;
1
PKNOM PRENOM
2
-------------------- --------------------
3
JOUGLET Antoine
4
VINCENT Antoine