Sql server SQL Server 2005-触发器循环?

Sql server SQL Server 2005-触发器循环?,sql-server,database,sql-server-2005,triggers,rdbms,Sql Server,Database,Sql Server 2005,Triggers,Rdbms,我第一次使用触发器 如果我通过同一个表上的更新触发器更新表中的一个字段,这会触发一个循环吗?sql server是否防范这种递归行为 感谢(搜索递归\u触发器)介绍了可用于修改此行为的一些数据库设置。另外,保护程序的一种方法是使用函数或函数 例如,如果您有一个包含列a、B和C的表,并且希望C的值在更新列B中的值时自动更改,则可以在触发器中保护调用: CREATE TRIGGER Whatever ON TableName AFTER UPDATE AS BEGIN IF UPDATE(B

我第一次使用触发器

如果我通过同一个表上的更新触发器更新表中的一个字段,这会触发一个循环吗?sql server是否防范这种递归行为

感谢(搜索
递归\u触发器
)介绍了可用于修改此行为的一些数据库设置。另外,保护程序的一种方法是使用函数或函数

例如,如果您有一个包含列
a
B
C
的表,并且希望
C
的值在更新列
B
中的值时自动更改,则可以在触发器中保护调用:

CREATE TRIGGER Whatever ON TableName AFTER UPDATE
AS
BEGIN
    IF UPDATE(B)
    BEGIN
        /* Update column C here */
    END
END

这样可以避免在触发器更新列
C
时递归调用触发器
COLUMNS\u UPDATED()
也很有用,但我发现它很脆弱(取决于列的位置而不是列名)。

您可以通过recursion\u TRIGGER选项在DB级别控制触发器的递归;默认情况下,它已关闭。即使启用此选项,触发器的嵌套级别也有32个限制;如果退出条件在达到32级限制之前没有停止递归,则所有更改都将回滚