你能在触发器中禁用触发器吗? SQL Server 2008

时间:2012-07-06 11:59:37

标签: sql sql-server-2008 triggers

您可以在触发器中禁用和重新启用触发器吗?

例如,我在前端应用程序中有一条信息,可以放在两个地方之一。如果有人把它放到位A,我想把它复制到B位,反之亦然。

所以,我的想法是在不同的表上放置两个触发器1)当它放入A时将它放入B中.2)当它放入B时它将它放入A

这会创建一个无休止的循环(我假设?)所以你可以在Trigger 2运行时禁用Trigger 1并在结束时启用它吗?

3 个答案:

答案 0 :(得分:1)

虽然我同意Damien的评论,即在同一个数据库中的两个表中复制数据通常是不可取的,如果你真的有充分理由这样做,那么你可以使用INSTEAD OF触发器代替AFTER触发器(我假设你现在正在看)。这样,您就可以用自己编码和控制的两个单独的INSERT“替换”单个INSERTs

答案 1 :(得分:0)

是的,你可以:

ALTER TABLE tablename DISABLE TRIGGER triggername
ALTER TABLE tablename ENABLE TRIGGER triggername

虽然,对于你的解决方案,我会创建一个在每一侧都运行相同的触发器,并且足够聪明,不会弄乱自己。

即。使触发器智能地区分用户/客户端INSERT和触发器'MOVE'。

答案 2 :(得分:0)

或者您可以在执行更新之前检查触发器中的信息是否已更改,这将结束循环?

相关问题