您可以在触发器中禁用和重新启用触发器吗?
例如,我在前端应用程序中有一条信息可以放在两个地方之一。如果有人将它放在 A 位置,我想将它复制到 B 位置,反之亦然。
所以,我的想法是在不同的表上放置两个触发器 1)当它放在 A 中时,它放在 B 中。2)当它放在 B 中时,它放在 A
这将创建一个永无止境的循环(我假设?)所以您可以在触发器 2 运行时禁用触发器 1 并在最后启用它吗?
您可以在触发器中禁用和重新启用触发器吗?
例如,我在前端应用程序中有一条信息可以放在两个地方之一。如果有人将它放在 A 位置,我想将它复制到 B 位置,反之亦然。
所以,我的想法是在不同的表上放置两个触发器 1)当它放在 A 中时,它放在 B 中。2)当它放在 B 中时,它放在 A
这将创建一个永无止境的循环(我假设?)所以您可以在触发器 2 运行时禁用触发器 1 并在最后启用它吗?
尽管我同意 Damien 的评论,即在同一个数据库中的两个表中复制数据通常是不可取的,但如果您真的有充分的理由这样做,那么您可以使用INSTEAD OF
触发器而不是AFTER
触发器(我假设您现在正在查看)。这样你就可以用你自己编码和控制INSERT
的两个独立的“替换”一个。INSERTs
是的你可以:
ALTER TABLE tablename DISABLE TRIGGER triggername
ALTER TABLE tablename ENABLE TRIGGER triggername
虽然,对于您的解决方案,我会创建一个在每一侧运行相同的触发器,并且足够聪明,不会搞砸自己。
即使触发器智能地区分用户/客户端INSERT 和触发器'MOVE'。
或者您可以在更新之前检查触发器中的信息是否已更改,这将结束循环?