oracle sql触发器循环更新和删除

时间:2013-06-16 07:48:33

标签: sql oracle

我在oracle上遇到触发器问题。

我有类似的东西:

 Project
 -------
 currentProgress
 plannedLoads
 currentLoads


Step
----
currentProgress
plannedLoads
currentLoads


Task
----
currentProgress
plannedLoads
currentLoads

项目由Step和Step组成,由Task组成。

currentProgress总是= currentLoads / plannedLoads。

我在插入任务之前有一个触发器,在插入,更新或删除时改进Step currentLoads,在Step currentLoads上改进另一个以改进Project currentLoads。

如果我更新Task,则会调用两个触发器,一个用于更新Step,另一个用于Project。

例如,当我更新Step时,我会更新它的currentLoad。

问题是当我删除一个项目时。我必须删除与之相关的步骤和任务。因此调用Task上的触发器和删除步骤,调用Project上的触发器。

我不确定我是否清楚。如果没有,请问我详细信息。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这听起来不像触发器的理想场景 - 它们最好用于额外的验证(即不能通过约束而不是约束来完成的事情)/日志/健全性检查等,而不是应用程序逻辑。

此外,我只会谨慎地使用触发器进行验证,并作为约束和应用程序验证的补充。

我强烈建议将维护这些记录的功能转移到PL / SQL过程中,并调用它而不是直接对表发出DML语句。这样,你就可以控制住。