34.2. Visibilité des modifications des données
Si vous exécutez des commandes SQL dans votre fonction SQL et que ces
commandes accèdent à la table pour laquelle vous créez ce
déclencheur, alors vous avez besoin de connaître les règles de
visibilité du déclencheur car elles déterminent si les commandes SQL
voient les données changées pour lesquelles est exécuté le
déclencheur. Brièvement :
-
Les déclencheurs niveau instruction suivent des règles de
visibilité simples : aucune des modifications réalisées par une
instruction n'est visible aux déclencheurs niveau instruction
appelés avant l'instruction alors que toutes les modifications
sont visibles aux déclencheurs après niveau instruction.
-
Les modifications de données (insertion, mise à jour ou
suppression) lançant le déclencheur ne sont naturellement
pas
visibles aux
commandes SQL exécutées dans un déclencheur avant en mode ligne
parce qu'elles ne sont pas encore survenues.
-
Néanmoins, les commandes SQL exécutées par un déclencheur avant
en mode ligne
verront
les effets des modifications de données pour les lignes
précédemment traitées dans la même commande externe. Ceci
requiert une grande attention car l'ordre des événements des
modifications n'est en général pas prévisible ; une commande
SQL affectant plusieurs lignes pourrait visiter les lignes dans
n'importe quel ordre.
-
Quand un déclencheur après en mode ligne est exécuté, toutes
les modifications de données réalisées par la commande externe
sont déjà terminées et sont visibles par la fonction appelée
par le déclencheur.
Il existe plus d'informations sur les règles de visibilité des
données dans la Section 41.4,
« Visibilité des modifications de données ». L'exemple
dans la Section 34.4, « Un exemple
complet » contient une démonstration de ces règles.