您可以在触发器中禁用和重新启用触发器吗?
例如,我在前端应用程序中有一条信息,可以放在两个位置之一。如果有人把它放在位置A,我想把它复制到位置B,反之亦然。
因此,我的想法是在不同的表上放置两个触发器1)当它放入A中时,它放入B中。2)当它放入B中时,它放入A中
这将创建一个永无止境的循环(我假设?)那么,您是否可以在触发器2运行时禁用触发器1,并在运行结束时启用它?
发布于 2012-07-07 06:16:10
虽然我同意Damien的观点,即在同一数据库的两个表中复制数据通常是不可取的,但如果您确实有很好的理由这样做,那么您可以使用INSTEAD OF触发器而不是AFTER触发器(我假设您现在正在考虑)。这样,您就可以用您自己编写和控制的两个单独的INSERT“替换”单个INSERTs。
发布于 2012-07-06 20:02:11
是的,您可以:
ALTER TABLE tablename DISABLE TRIGGER triggername
ALTER TABLE tablename ENABLE TRIGGER triggername不过,对于您的解决方案,我会创建一个触发器,该触发器在两端运行相同,并且足够聪明,不会搞砸自己。
即使触发器智能地区分用户/客户端插入和触发器“移动”。
发布于 2012-07-06 20:03:38
或者,您可以在执行更新之前检查触发器中的信息是否已更改,这将结束循环?
https://stackoverflow.com/questions/11361791
复制相似问题