Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Devolve o número de gatilhos executados para a instrução que disparou o gatilho. TRIGGER_NESTLEVEL é usado nos gatilhos DML e DDL para determinar o nível atual de nesting.
Transact-SQL convenções de sintaxe
Sintaxe
TRIGGER_NESTLEVEL ( [ object_id ] , [ 'trigger_type' ] , [ 'trigger_event_category' ] )
Arguments
object_id
É o ID do objeto de um gatilho. Se object_id for especificado, o número de vezes que o gatilho especificado foi executado para a instrução é devolvido. Se object_id não for especificado, é devolvido o número de vezes que todos os disparadores foram executados para a instrução.
'trigger_type'
Especifica se deve aplicar TRIGGER_NESTLEVEL aos gatilhos AFTER ou INSTEAD OF triggers. Especifique AFTER para os gatilhos AFTER. Especifique IoT para EM VEZ de triggers. Se trigger_type for especificado, trigger_event_category também deve ser especificado.
'trigger_event_category'
Especifica se deve aplicar TRIGGER_NESTLEVEL a gatilhos DML ou DDL. Especifique DML para os gatilhos DML. Especifique DDL para os gatilhos DDL. Se trigger_event_category for especificado, trigger_type também deve ser especificado. Note que só pode ser especificado DEPOIS com DDL, porque os gatilhos DDL só podem ser gatilhos DEPOIS.
Observações
Quando não são especificados parâmetros, TRIGGER_NESTLEVEL devolve o número total de disparadores na pilha de chamadas. Isto inclui-se a si próprio. A omissão de parâmetros pode ocorrer quando um gatilho executa comandos que provocam o disparo de outro gatilho ou cria uma sucessão de gatilhos de disparo.
Para devolver o número total de gatilhos na pilha de chamadas para um determinado tipo de gatilho e categoria de evento, especifique object_id = 0.
TRIGGER_NESTLEVEL devolve 0 se for executado fora de um trigger e quaisquer parâmetros não forem NULL.
Quando qualquer parâmetro é explicitamente especificado como NULL, um valor de NULL é devolvido independentemente de TRIGGER_NESTLEVEL ter sido usado dentro ou fora de um trigger.
Examples
A. Testar o nível de aninhamento de um disparador DML específico
IF ( (SELECT TRIGGER_NESTLEVEL( OBJECT_ID('xyz') , 'AFTER' , 'DML' ) ) > 5 )
RAISERROR('Trigger xyz nested more than 5 levels.',16,-1)
B. Testar o nível de aninhamento de um disparador DDL específico
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 o nível de aninhamento de todos os gatilhos executados
IF ( (SELECT trigger_nestlevel() ) > 5 )
RAISERROR
('This statement nested over 5 levels of triggers.',16,-1)