Video: Marcus Pedersen avslører hemmeligheten til hvordan man får suksess på fotballbanen 2025
Du kan sannsynligvis se en komplikasjon i måten SQL utløser operere. Anta at du lager en utløser som forårsaker at en SQL-setning utføres på et bord ved utførelse av noen tidligere SQL-setning. Hva om det utløste utsagnet selv fører til at en andre utløseren brann?
Den andre utløseren fører til at en tredje SQL-setning utføres på et andre bord, som i seg selv kan føre til at en annen utløser brenner, og påvirker enda en tabell. Hvordan er det mulig å holde alt rett? SQL håndterer denne maskin-pistol-stil utløseren skyter med noe som kalles utløser utførelse kontekster.
En rekke INSERT, DELETE og UPDATE operasjoner kan utføres ved å neste sammenhenger der de forekommer. Når en utløser brenner, opprettes en utførelseskontekst. Bare én utførelseskontekst kan være aktiv om gangen. Innenfor denne konteksten kan en SQL-setning utføres som brenner en andre trigger.
På den tiden suspenderes eksisterende eksekveringskontekst i en operasjon som er analog med å skyve en verdi på en stabel. En ny utførelseskontekst, som tilsvarer den andre utløseren, blir opprettet, og dens operasjon utføres.
Det er ingen vilkårlig grense for dybden av nesting mulig. Når en operasjon er fullført, blir dens utførelseskontekst ødelagt, og den neste høyere utførelseskonteksten er "poppet av stakken" og aktivert. Denne prosessen fortsetter til alle handlinger er fullført, og alle utførelseskontekstene er ødelagt.