Comment tirer une succession de déclencheurs SQL

Vous pouvez probablement voir une complication de la manière déclencheurs SQL opèrent. Supposons que vous créez un déclencheur qui provoque une instruction SQL à être exécutée sur une table lors de l'exécution de certains instruction SQL précédente. Que faire si cette déclaration déclenché lui-même provoque un second déclencheur au feu?

Ce second déclencheur provoque une troisième déclaration de SQL à être exécutée sur un deuxième tableau, qui peut lui-même provoquer encore un autre trigger, affectant encore une autre table. Comment est-il possible de garder tout droit? SQL gère ce déclencheur mitrailleuse style tirer avec quelque chose appelé contextes d'exécution de déclenchement.

Une succession de INSERT, EFFACER, et METTRE À JOUR opérations peuvent être effectuées en imbriquant les contextes dans lesquels ils se produisent. Quand un trigger, un contexte d'exécution est créé. Seul un contexte d'exécution peut être actif à la fois. Dans ce contexte, une instruction SQL peut être exécuté que tire un second déclencheur.

À ce moment, le contexte d'exécution actuel est mis en suspension dans une opération de poussée analogue à une valeur sur une pile. Un nouveau contexte d'exécution, correspondant à la deuxième gâchette, est créé, et son opération est effectuée.

Il n'y a aucune limite arbitraire à la profondeur d'imbrication possible. Lorsqu'une opération est terminée, son contexte d'exécution est détruite, et le contexte d'exécution est supérieur suivant “ a sauté hors de la pile n ° 148; et réactivé. Ce processus continue jusqu'à ce que toutes les actions sont complets et tous les contextes d'exécution ont été détruites.


» » » » Comment tirer une succession de déclencheurs SQL