Transact-SQL 参考

TRIGGER_NESTLEVEL

返回对激发触发器的 UPDATE、INSERT 或 DELETE 语句执行的触发器数量。TRIGGER_NESTLEVEL 用于触发器中以确定当前的嵌套级别。

语法

TRIGGER_NESTLEVEL ( [ object_id ] )

参数

object_id

是触发器的对象 ID。如果指定了 object_id,则返回为该语句执行指定触发器的次数。如果未指定 object_id,则返回为该语句执行全部触发器的次数。

object_id 省略时(与空值不同),TRIGGER_NESTLEVEL 返回调用堆栈上的触发器数(包括它本身)。当触发器所执行命令导致其它触发器激发,或导致了触发器的连续激发时,可省略 object_id

注释

如果在触发器之外执行,且 object_id 不是 NULL,则 TRIGGER_NESTLEVEL 返回 0。

TRIGGER_NESTLEVEL 以对象 ID 作为其可选参数。当 object_id 显式指定为 NULL 或所引用的对象 ID 无效时,无论 TRIGGER_NESTLEVEL 是在触发器内部还是外部使用,均返回 NULL 值。

示例
A. 测试某个特定触发器的嵌套级
IF ( (SELECT trigger_nestlevel( object_ID('xyz') ) ) > 5 )
   RAISERROR('Trigger xyz nested more than 5 levels.',16,-1)
B. 测试所执行的全部触发器的嵌套级
IF ( (SELECT trigger_nestlevel() ) > 5 )
   RAISERROR
      ('This statement nested over 5 levels of triggers.',16,-1)

请参见

CREATE TRIGGER