Video: Animatie van de geschiedenis van de aarde : verschuiving van Nederland en België : Aardrijkskunde 2024
U kunt waarschijnlijk een complicatie zien in de manier waarop SQL-triggers werken. Stel dat u een trigger maakt die ervoor zorgt dat een SQL-instructie wordt uitgevoerd op een tabel na de uitvoering van een eerdere voorgaande SQL-instructie. Wat als die getriggerde instructie zelf tot een tweede trigger leidt?
Die tweede trigger zorgt ervoor dat een derde SQL-instructie wordt uitgevoerd op een tweede tabel, die zelf weer een nieuwe trigger voor brand kan veroorzaken, die nog een andere tabel beïnvloedt. Hoe is het mogelijk om alles recht te houden? SQL verwerkt deze triggerprocedure voor machinegeweren met iets genaamd triggeruitvoeringcontext.
Een opeenvolging van INSERT, DELETE en UPDATE-bewerkingen kan worden uitgevoerd door de contexten waarin ze voorkomen te nesten. Wanneer een trigger wordt geactiveerd, wordt een uitvoeringscontext gemaakt. Er kan slechts één uitvoeringscontext per keer actief zijn. In die context kan een SQL-instructie worden uitgevoerd die een tweede trigger afgaat.
Op dat moment wordt de bestaande uitvoeringscontext opgeschort in een bewerking die analoog is aan het duwen van een waarde op een stapel. Een nieuwe uitvoeringscontext, die overeenkomt met de tweede trigger, wordt gemaakt en de werking ervan wordt uitgevoerd.
Er is geen arbitraire limiet voor de diepte van nesting mogelijk. Wanneer een bewerking is voltooid, wordt de uitvoeringscontext vernietigd en wordt de volgende hogere uitvoeringscontext "van de stapel" verwijderd en opnieuw geactiveerd. Dit proces gaat door totdat alle acties zijn voltooid en alle uitvoeringscontexten zijn vernietigd.