Database Reference
In-Depth Information
Les déclencheurs INSTEAD OF
Un déclencheur
INSTEAD OF
permet de mettre à jour une vue qui ne peut pas être modi-
iée directement par
INSERT
,
UPDATE
ou
DELETE
. L'expression
instead of
est explicite : le
déclencheur programmera des actions
au lieu
d'insérer, de modiier ou de supprimer dans
une vue.
Ce mécanisme peut être particulièrement intéressant dans un contexte de bases de données
réparties où une action sur la base doit être dupliquée via le réseau (
database links
).
Les déclencheurs
INSTEAD OF
sont des déclencheurs ligne (option
FOR EACH ROW
), ils ne
s'appliquent qu'aux vues relationnelles ou objet et ne font pas intervenir les directives
BEFORE
et
AFTER
au niveau de l'événement déclencheur. La syntaxe simpliiée d'un déclencheur
INS-
TEAD OF
.
CREATE TRIGGER nom_
declencheur
INSTEAD OF
{ UPDATE [OR INSERT] [OR DELETE] } ON
nom
_vue
[ REFERENCING NEW AS
v1
OLD AS
v2
]
FOR EACH ROW
DECLARE
…
BEGIN
…
END;
L'option.de.contrôle.(
WITH CHECK OPTION
).d'une.vue.n'est.pas.vérifiée.si.un.déclencheur.
INSTEAD OF
.est.programmé.sur. l'événement.en.question. (ajout,.modification.ou.suppres-
sion)..Le.corps.du.déclencheur.doit.donc.explicitement.prendre.en.compte.la.contrainte.
À. l'instar.des.déclencheurs. traditionnels,. il.n'est.permis.de.programmer.qu'un. seul.déclen-
cheur.
INSTEAD OF
.par.table.
Considérons les vues relationnelles créées dans le premier paragraphe et qu'il n'était pas pos-
sible de mettre à jour.
Mise à jour d'une vue complexe
La vue suivante présente plusieurs obstacles à sa mise à jour directe : sa requête de déinition
contient des fonctions d'agrégat et elle ne contient pas la clé primaire qu'elle iltre.