Sql server 何时执行嵌套触发器
当SQL Server中启用了触发器上的递归,并且我在after触发器中更新了同一个表时,何时执行嵌套(递归)触发器:Sql server 何时执行嵌套触发器,sql-server,Sql Server,当SQL Server中启用了触发器上的递归,并且我在after触发器中更新了同一个表时,何时执行嵌套(递归)触发器: 在源触发器的执行范围内 当原始触发器完成工作时 结论:当父触发器中的DML语句被执行时,子触发器触发,然后控制返回到父触发器,父触发器可能在DML语句之后执行其他代码 结论:当父触发器中的DML语句被执行时,子触发器触发,然后控制返回到父触发器,父触发器可能会在DML语句之后执行额外的代码。老实说,我没有任何线索。你有没有试过用探查器看看发生了什么?老实说,我一点都不知道。
- 在源触发器的执行范围内李>
- 当原始触发器完成工作时
结论:当父触发器中的DML语句被执行时,子触发器触发,然后控制返回到父触发器,父触发器可能会在DML语句之后执行额外的代码。老实说,我没有任何线索。你有没有试过用探查器看看发生了什么?老实说,我一点都不知道。您是否尝试过使用探查器查看发生了什么?
CREATE TABLE T ( C INT )
GO
CREATE TRIGGER TR_T
ON T
AFTER UPDATE
AS
BEGIN
RAISERROR('TR - Entered @@NESTLEVEL=%d',0,1,@@NESTLEVEL)
IF @@NESTLEVEL < 5
UPDATE T SET C=@@NESTLEVEL
RAISERROR('TR - Exited @@NESTLEVEL=%d',0,1,@@NESTLEVEL)
END
GO
SET NOCOUNT ON
UPDATE T SET C=12
TR - Entered @@NESTLEVEL=1
TR - Entered @@NESTLEVEL=2
TR - Entered @@NESTLEVEL=3
TR - Entered @@NESTLEVEL=4
TR - Entered @@NESTLEVEL=5
TR - Exited @@NESTLEVEL=5
TR - Exited @@NESTLEVEL=4
TR - Exited @@NESTLEVEL=3
TR - Exited @@NESTLEVEL=2
TR - Exited @@NESTLEVEL=1