Video: Tag ordet med succes! Sådan brænder du igennem med dit budskab 2025
Du kan sikkert se en komplikation i den måde, SQL udløser, fungerer. Antag at du opretter en trigger, der får en SQL-sætning til at blive udført på et bord efter udførelsen af en forudgående SQL-sætning. Hvad hvis det udløste udsagn selv forårsager en anden udløser til ild?
Den anden udløser forårsager, at en tredje SQL-sætning udføres på en anden tabel, hvilket i sig selv kan forårsage endnu en trigger til at affyre, hvilket påvirker endnu en tabel. Hvordan er det muligt at holde alt lige? SQL håndterer denne maskine-gun-style trigger fyring med noget kaldet trigger execution context.
En række af INSERT, DELETE og UPDATE operationer kan udføres ved at neste de sammenhænge, de forekommer i. Når en trigger udløses, oprettes en eksekveringskontekst. Kun én eksekveringskontekst kan være aktiv ad gangen. Inden for denne sammenhæng kan en SQL-sætning udføres, der brænder en anden trigger.
På dette tidspunkt suspenderes den eksisterende eksekveringskontekst i en operation analog med at skubbe en værdi på en stak. En ny udførelseskontekst, der svarer til den anden trigger, oprettes, og dens operation udføres.
Der er ingen vilkårlig grænseværdi for dybden af nesting muligt. Når en operation er færdig, ødelægges dens eksekveringskontekst, og den næste højere udførelseskontekst er "poppet fra stakken" og genaktiveret. Denne proces fortsætter, indtil alle handlinger er færdige, og alle udførelseskontekster er blevet ødelagt.