TRIGGER_NESTLEVEL (Transact-SQL)TRIGGER_NESTLEVEL (Transact-SQL)

SE APLICA A: síSQL Server (a partir de 2008) síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Devuelve el número de desencadenadores que se han ejecutado para la instrucción que ha activado el desencadenador.Returns the number of triggers executed for the statement that fired the trigger. TRIGGER_NESTLEVEL se utiliza en desencadenadores DML y DDL para determinar el nivel actual de anidamiento.TRIGGER_NESTLEVEL is used in DML and DDL triggers to determine the current level of nesting.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

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

ArgumentosArguments

object_idobject_id
Es el Id. de objeto de un desencadenador.Is the object ID of a trigger. Si se especifica object_id, se devuelve el número de veces que el desencadenador especificado se ha ejecutado para la instrucción.If object_id is specified, the number of times the specified trigger has been executed for the statement is returned. Si no se especifica object_id, se devuelve el número de veces que se han ejecutado todos los desencadenadores para la instrucción.If object_id is not specified, the number of times all triggers have been executed for the statement is returned.

' trigger_type '' trigger_type '
Especifica si se aplica TRIGGER_NESTLEVEL a los desencadenadores AFTER o a los desencadenadores INSTEAD OF.Specifies whether to apply TRIGGER_NESTLEVEL to AFTER triggers or INSTEAD OF triggers. Especifique AFTER para desencadenadores AFTER.Specify AFTER for AFTER triggers. Especifique IOT para desencadenadores INSTEAD OF.Specify IOT for INSTEAD OF triggers. Si se especifica trigger_type, trigger_event_category también debe especificarse.If trigger_type is specified, trigger_event_category must also be specified.

' trigger_event_category '' trigger_event_category '
Especifica si se aplica TRIGGER_NESTLEVEL a desencadenadores DML o DDL.Specifies whether to apply TRIGGER_NESTLEVEL to DML or DDL triggers. Especifique DML para desencadenadores DML.Specify DML for DML triggers. Especifique DDL para desencadenadores DDL.Specify DDL for DDL triggers. Si se especifica trigger_event_category, trigger_type también debe especificarse.If trigger_event_category is specified, trigger_type must also be specified. Tenga en cuenta que solo se puede especificar AFTER con DDL, ya que los desencadenadores DDL solo pueden ser desencadenadores AFTER.Note that only AFTER can be specified with DDL, because DDL triggers can only be AFTER triggers.

NotasRemarks

Cuando no se especifica ningún parámetro, TRIGGER_NESTLEVEL devuelve el número total de desencadenadores de la pila de llamadas.When no parameters are specified, TRIGGER_NESTLEVEL returns the total number of triggers on the call stack. Esto incluye el propio desencadenador.This includes itself. La omisión de los parámetros puede darse cuando un desencadenador ejecuta comandos que causan la activación de otro desencadenador o de una serie de desencadenadores.Omission of parameters can occur when a trigger executes commands causing another trigger to be fired or creates a succession of firing triggers.

Para devolver el número total de desencadenadores en la pila de llamadas para un tipo de desencadenador y una categoría de eventos determinados, especifique object_id = 0.To return the total number of triggers on the call stack for a particular trigger type and event category, specify object_id = 0.

TRIGGER_NESTLEVEL devuelve 0 si se ejecuta fuera de un desencadenador y cualquier parámetro es distinto de NULL.TRIGGER_NESTLEVEL returns 0 if it is executed outside a trigger and any parameters are not NULL.

Cuando algunos parámetros se especifican explícitamente como NULL, el valor de NULL se devuelve independientemente de si TRIGGER_NESTLEVEL se utilizó dentro o fuera de un desencadenador.When any parameters are explicitly specified as NULL, a value of NULL is returned regardless of whether TRIGGER_NESTLEVEL was used within or external to a trigger.

EjemplosExamples

A.A. Probar el nivel de anidamiento de un desencadenador DML específicoTesting the nesting level of a specific DML trigger

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

B.B. Probar el nivel de anidamiento de un desencadenador DDL específicoTesting the nesting level of a specific 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.C. Probar el nivel de anidamiento de todos los desencadenadores ejecutadosTesting the nesting level of all triggers executed

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

Ver tambiénSee Also

CREATE TRIGGER (Transact-SQL)CREATE TRIGGER (Transact-SQL)