Delen via


TRIGGER_NESTLEVEL (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Geeft het aantal triggers terug dat is uitgevoerd voor de instructie die de trigger heeft getriggerd. TRIGGER_NESTLEVEL wordt gebruikt in DML- en DDL-triggers om het huidige niveau van genesing te bepalen.

Transact-SQL syntaxis-conventies

Syntaxis

TRIGGER_NESTLEVEL ( [ object_id ] , [ 'trigger_type' ] , [ 'trigger_event_category' ] )  

Arguments

object_id
Is de object-ID van een trigger. Als object_id is gespecificeerd, wordt het aantal keren dat de gespecificeerde trigger voor de instructie is uitgevoerd teruggegeven. Als object_id niet is gespecificeerd, wordt het aantal keren dat alle triggers voor de instructie zijn uitgevoerd teruggegeven.

'trigger_type'
Geeft aan of TRIGGER_NESTLEVEL moet worden toegepast op NA-triggers of IN PLAATS OF-triggers. Specificeer NA voor NA-triggers. Specificeer IOT voor IN PLAATS VAN triggers. Als trigger_type wordt gespecificeerd, moet trigger_event_category ook worden gespecificeerd.

'trigger_event_category'
Specificeert of TRIGGER_NESTLEVEL moet worden toegepast op DML- of DDL-triggers. Specificeer DML voor DML-triggers. Specificeer DDL voor DDL-triggers. Als trigger_event_category wordt gespecificeerd, moet trigger_type ook worden gespecificeerd. Let op dat alleen NA kan worden gespecificeerd met DDL, omdat DDL-triggers alleen NA triggers kunnen zijn.

Opmerkingen

Wanneer er geen parameters zijn gespecificeerd, geeft TRIGGER_NESTLEVEL het totale aantal triggers op de call stack terug. Dit geldt ook voor zichzelf. Het weglaten van parameters kan optreden wanneer een trigger commando's uitvoert waardoor een andere trigger wordt afgevuurd of een opeenvolging van triggers veroorzaakt.

Om het totale aantal triggers op de call stack voor een bepaald triggertype en gebeurteniscategorie terug te geven, specificeer object_id = 0.

TRIGGER_NESTLEVEL geeft 0 terug als het buiten een trigger wordt uitgevoerd en geen parameters NULL zijn.

Wanneer parameters expliciet als NULL zijn gespecificeerd, wordt een waarde van NULL teruggegeven, ongeacht of TRIGGER_NESTLEVEL binnen of extern aan een trigger is gebruikt.

Voorbeelden

Eén. Het testen van het nestingniveau van een specifieke DML-trigger

IF ( (SELECT TRIGGER_NESTLEVEL( OBJECT_ID('xyz') , 'AFTER' , 'DML' ) ) > 5 )  
   RAISERROR('Trigger xyz nested more than 5 levels.',16,-1)  

B. Het testen van het nestingniveau van een specifieke 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. Het testen van het nestingniveau van alle uitgevoerde triggers

IF ( (SELECT trigger_nestlevel() ) > 5 )  
   RAISERROR  
      ('This statement nested over 5 levels of triggers.',16,-1)  

Zie ook

MAAK TRIGGER (Transact-SQL)