Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Returnerar antalet triggers som körts för uttalandet som utlöste triggern. TRIGGER_NESTLEVEL används i DML- och DDL-triggers för att bestämma den aktuella nivån av nästling.
Transact-SQL syntaxkonventioner
Syntax
TRIGGER_NESTLEVEL ( [ object_id ] , [ 'trigger_type' ] , [ 'trigger_event_category' ] )
Arguments
object_id
Är objekt-ID:t för en trigger. Om object_id anges returneras antalet gånger den angivna triggern har körts för satsen. Om object_id inte specificeras returneras antalet gånger alla triggers har körts för uttalandet.
'trigger_type'
Specificerar om TRIGGER_NESTLEVEL ska tillämpas på EFTER-triggers eller ISTÄLLET FÖR triggers. Specificera EFTER för EFTER-triggers. Specificera IOT för ISTÄLLET FÖR triggers. Om trigger_type anges måste trigger_event_category också anges.
'trigger_event_category'
Specificerar om TRIGGER_NESTLEVEL ska tillämpas på DML- eller DDL-triggers. Ange DML för DML-triggers. Ange DDL för DDL-triggers. Om trigger_event_category anges måste trigger_type också anges. Observera att endast EFTER kan specificeras med DDL, eftersom DDL-triggers bara kan vara EFTER-triggers.
Anmärkningar
När inga parametrar anges returnerar TRIGGER_NESTLEVEL det totala antalet triggers på anropsstacken. Detta inkluderar sig själv. Utelämnande av parametrar kan inträffa när en avtryckare utför kommandon som får en annan avtryckare att avfyras eller skapar en följd av avfyrande avtryckare.
För att returnera det totala antalet triggers på anropsstacken för en viss triggertyp och händelsekategori, specificera object_id = 0.
TRIGGER_NESTLEVEL returnerar 0 om det utförs utanför en trigger och inga parametrar inte är NULL.
När några parametrar uttryckligen anges som NULL returneras värdet NULL oavsett om TRIGGER_NESTLEVEL användes inom eller utanför en trigger.
Examples
A. Testa inbäddningsnivån för en specifik DML-trigger
IF ( (SELECT TRIGGER_NESTLEVEL( OBJECT_ID('xyz') , 'AFTER' , 'DML' ) ) > 5 )
RAISERROR('Trigger xyz nested more than 5 levels.',16,-1)
B. Testa inbäddningsnivån för en specifik DDL-trigger
IF ( ( SELECT TRIGGER_NESTLEVEL ( ( SELECT object_id FROM sys.triggers
WHERE name = 'abc' ), 'AFTER' , 'DDL' ) ) > 5 )
RAISERROR ('Trigger abc nested more than 5 levels.',16,-1)
C. Testar nästlingsnivån för alla utförda triggers
IF ( (SELECT trigger_nestlevel() ) > 5 )
RAISERROR
('This statement nested over 5 levels of triggers.',16,-1)