触发器,它会无限循环吗?

zun*_*tic 12 sql t-sql sql-server triggers

具有"INSTEAD OF"触发器的表上的Insert语句是否会导致无限的"反向插入"执行循环?

例如:

CREATE TRIGGER setDescToUpper ON part_numbers
INSTEAD OF INSERT

AS
BEGIN
    INSERT INTO part_numbers (
        colA,
        colB,
        part_description
    ) SELECT
        colA,
        colB,
        UPPER(part_description)
    ) FROM
        INSERTED
END
GO
Run Code Online (Sandbox Code Playgroud)

在"而不是"触发器内的insert语句会导致循环吗?

我不想禁用递归触发器.

我是否需要暂时禁用触发器?

来源:SQL Server - 插入触发器后 - 更新同一个表中的另一列

Pat*_*ick 16

此INSERT不会重新调用触发器.

SQL Server不会以递归方式调用INSTEAD OF触发器,这正是您提出的原因.

  • +1对,这是一个INSTEAD OF触发器.[MSDN说](http://msdn.microsoft.com/en-us/library/ms189799.aspx):"如果在表上定义的INSTEAD OF触发器执行对通常触发INSTEAD OF触发器的表的语句再一次,触发器不是递归调用的,而是处理语句,就好像表没有INSTEAD OF触发器并启动约束操作链和AFTER触发器执行一样. (3认同)