【发布时间】:2012-07-06 11:59:36
【问题描述】:
您能否在触发器中禁用和重新启用触发器?
例如,我在前端应用程序中有一条信息可以放在两个位置之一。如果有人将它放在 A 位置,我想将它复制到 B 位置,反之亦然。
所以,我的想法是在不同的表上放置两个触发器 1)当它放在 A 中时,它会放在 B 中。2)当它放在 B 中时,它会放在 A 中
这将创建一个永无止境的循环(我假设?)所以您可以在触发器 2 运行时禁用触发器 1 并在最后启用它吗?
【问题讨论】:
-
您不应该这样做 - 如果连接 1 刚刚在表 A 上进行了插入 - 触发器禁用表 B 上的触发器 - 现在连接 2 在那里进行插入,而触发器没有火。
-
每当您考虑在数据库中复制数据时,您首先应该问自己模型是否正确——A 和 B 是否应该是建立在单个视图之上的两个视图比如表?
-
100 次中有 99 次我都同意你的观点。将它放在 2 个位置的原因是因为一个是前端的任何人都可以覆盖的字段,另一个是固定的,"仅查看”区域(因为它像网格一样可见)。人们懒得把数据放在这两个区域,所以我想办法自动将数据从一个区域复制到另一个区域,反之亦然。
标签: sql sql-server-2008 triggers