使用事务复制的更新触发器时遇到错误

时间:2011-04-20 11:15:48

标签: sql-server sql-server-2008 database-replication

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

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)

出了什么问题?

2 个答案:

答案 0 :(得分:0)

看起来你写了recursive (aka nested) trigger

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

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

答案 1 :(得分:0)

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

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

总结解决方案:

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

创造触发...... 如果TRIGGER_NESTLEVEL> 1返回