首页 文章

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

提问于
浏览
0

你能在触发器中禁用和重新启用触发器吗?

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

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

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

3 回答

  • 1

    虽然我同意Damien的观点,即在同一个数据库中的两个表中复制数据通常是不可取的,如果你真的有充分的理由这样做,那么你可以使用INSTEAD OF触发器而不是 AFTER 触发器(我假设你're looking at now). That way you can '替换'单个 INSERT 与您自己编码和控制的两个单独的 INSERTs .

  • 0

    是的你可以:

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

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

    即使触发器智能地区分用户/客户端INSERT和触发器“MOVE” .

  • 0

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

相关问题