0

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

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

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

这将创建一个永无止境的循环(我假设?)所以您可以在触发器 2 运行时禁用触发器 1 并在最后启用它吗?

4

3 回答 3

1

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

于 2012-07-06T22:16:10.177 回答
0

是的你可以:

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

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

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

于 2012-07-06T12:02:11.007 回答
0

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

于 2012-07-06T12:03:37.653 回答