0

我正在使用带有可更新订阅的事务复制。当我在我的一个表中添加一个触发器以在发布者中复制时,我遇到了这个错误:

Maximum stored procedure, function,trigger, 
or view nesting level exceeded(limit 32)

我的触发代码是

create trigger Isupdated 
    on tbl_worker 
    for update as 
        update tbl_worker SET 
           Isup=1 
        where id= (select id from inserted)

怎么了?

4

2 回答 2

0

http://www.sqlmonster.com/Uwe/Forum.aspx/sql-server-programming/4752/Maximum-stored-procedure-function-trigger-or-view

上面的链接提供了触发嵌套的解决方案。当您已经有一个触发器然后复制添加另一个触发器时,这会非常有用。我喜欢这不仅仅是组合触发器,因为它不会强迫您混合与功能相关的代码和与复制相关的代码。

总结一下解决方案:

您可以通过使用 sp_settriggerorder 为触发器分配顺序来防止发生嵌套触发,并将以下检查添加到您设置为首先触发的触发器的开头,以防止它被另一个触发器触发:

创建触发器.... IF TRIGGER_NESTLEVEL > 1 RETURN

于 2011-07-27T09:53:03.137 回答
0

看起来您已经编写了一个递归(又名嵌套)触发器

也许触发器导致表上的更新,导致触发器再次被触发?

如果您发布代码,这将有助于我们准确解释问题所在。

于 2011-04-20T12:04:28.120 回答