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.

RappelBD "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)

ExempleBD "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