Condividi tramite


TRIGGER_NESTLEVEL (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

Restituisce il numero di trigger eseguiti per l'istruzione che ha attivato il trigger. TRIGGER_NESTLEVEL viene utilizzata nei trigger DML e DDL per determinare il livello di nidificazione.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

object_id
ID di oggetto di un trigger. Se si specifica object_id, viene restituito il numero di esecuzioni del trigger specificato per l'istruzione. Se non si specifica object_id, viene restituito il numero di esecuzioni di tutti i trigger per l'istruzione.

' trigger_type '
Specifica se applicare TRIGGER_NESTLEVEL ai trigger AFTER oppure ai trigger INSTEAD OF. Specificare AFTER per i trigger AFTER. Specificare IOT per i trigger INSTEAD OF. Se trigger_type viene specificato, deve essere specificato anche trigger_event_category.

' trigger_event_category '
Specifica se applicare TRIGGER_NESTLEVEL ai trigger DML o DDL. Specificare DML per i trigger DML. Specificare DDL per i trigger DDL. Se trigger_event_category viene specificato, deve essere specificato anche trigger_type. Se si specifica DDL è possibile specificare solo AFTER perché i trigger DDL possono essere solo trigger AFTER.

Osservazioni:

Se non si specifica alcun parametro, TRIGGER_NESTLEVEL restituisce il numero totale di trigger nello stack di chiamate. Nel numero è incluso il parametro stesso. È possibile omettere i parametri quando un trigger esegue comandi che provocano l'attivazione di un altro trigger o crea una serie di attivazioni di trigger.

Per restituire il numero totale di trigger nello stack di chiamate per un tipo di trigger specifico o una categoria di eventi specifica, impostare object_id = 0.

TRIGGER_NESTLEVEL restituisce il valore 0 se viene eseguita all'esterno di un trigger e i parametri sono diversi da NULL.

Se i parametri vengono specificati in modo esplicito come NULL, viene restituito il valore NULL indipendentemente dal fatto che TRIGGER_NESTLEVEL sia stata utilizzata all'interno o all'esterno di un trigger.

Esempi

R. Controllo del livello di nidificazione di un trigger DML specifico

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

B. Controllo del livello di nidificazione di un trigger DDL specifico

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. Controllo del livello di nidificazione di tutti i trigger

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

Vedi anche

CREATE TRIGGER (Transact-SQL)