Qu'est-ce que sont les déclencheurs ?

Oracle offre un riche panel de déclencheurs.

Pour la génération des APIs de tables de ce site, nous avons retenus les 12 déclencheurs obéissant aux 3 jeux de critères ci-après :

  • Avant ou après la manipulation de table [BEFORE | AFTER]
  • Selon la nature de la manipulation [INSERT | UPDATE | DELETE ]
  • Portée de la manipulation [FOR EACH ROW | STATEMENT]

Nous utiliserons ces 12 déclencheurs au niveau de la manipulation des tables.

Pour la manipulation des données au travers des vues, ce que permet Oracle, nous avons retenu les 3 déclencheurs INSTEAD OF obéissant au critère de nature de la manipulation [INSERT | UPDATE | DELETE ]

Nota: Pour spécifier un déclencheur de table au niveau de l'ordre (STATEMENT) , il faut omettre d'écrire la clause FOR EACH ROW.

Exemple de déclencheur

CREATE OR REPLACE TRIGGER Usa_BIR BEFORE

INSERT ON Usages FOR EACH ROW DECLARE vl_newrec Usages%ROWTYPE;

BEGIN

vl_newrec.num := :NEW.num;

vl_newrec.code := :NEW.code;

vl_newrec.libelle := :NEW.libelle;

vl_newrec.descriptif := :NEW.descriptif;

vl_newrec.ordre := :NEW.ordre;

Usa_TAPIs.autogen_column_ins(vl_newrec);

Usa_TAPIs.autogen_column(vl_newrec);

Usa_TAPIs.checktype_column(vl_newrec);

Usa_TAPIs.uppercase_column(vl_newrec);

Usa_TAPIs.column_PEA(vl_newrec);

:NEW.num := vl_newrec.num;

:NEW.code := vl_newrec.code;

:NEW.libelle := vl_newrec.libelle;

:NEW.descriptif := vl_newrec.descriptif;

:NEW.ordre := vl_newrec.ordre;

END;

Le déclencheur ci-dessus intercepte l'insertion d'un nouveau tuple dans la table Usages avant son exécution.

Le mot-clé :NEW retourne le pseudo-enregistrement à insérer. Les parties du pseudo-enregistrement (colonnes de la table) peuvent être modifiées.

Les procédures stockées appelées par le déclencheur traitent le pseudo-enregistrement qu'elles reçoivent en paramètre. Par exemple la procédure autogen_column_ins() génère la valeur de clé primaire pour une table indépendante.