我们有一个架构,其中对数据表的修改触发了作业的创建和处理程序的后续处理(用 perl 编写并通过通道通知)。在作业处理期间,处理程序需要更新数据表。为了避免递归,我们:
- 需要在更新前禁用触发器
- 进行更新和
- 再次启用触发器。
由于可能会在项目生命周期的后期添加新的处理程序,因此可能会忘记禁用和启用触发器,因此这可能会成为维护问题。
作为一种替代方法,我们设计了将触发器的范围限制为特定于前端的视图的想法。这些视图可通过instead of
触发器写入(另请参阅此问题)。处理程序在作业执行期间直接更新数据表,因此不会触发任何递归作业。我们有这种方法的有效实施。
在我看来,我们在这里交换复杂性:结构(附加视图)的算法(启用禁用触发器)。我们目前倾向于选择后者,但我想请你们就此事提供一些意见……这是一种合理的方法吗?