您可以在触发器中禁用和重新启用触发器吗?
例如,我在前端应用程序中有一条信息,可以放在两个地方之一。如果有人把它放到位A,我想把它复制到B位,反之亦然。
所以,我的想法是在不同的表上放置两个触发器1)当它放入A时将它放入B中.2)当它放入B时它将它放入A
这会创建一个无休止的循环(我假设?)所以你可以在Trigger 2运行时禁用Trigger 1并在结束时启用它吗?
答案 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)
或者您可以在执行更新之前检查触发器中的信息是否已更改,这将结束循环?