繁体   English   中英

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

[英]oracle sql trigger loop update and delete

我在oracle上触发有问题。

我有这样的事情:

 Project
 -------
 currentProgress
 plannedLoads
 currentLoads


Step
----
currentProgress
plannedLoads
currentLoads


Task
----
currentProgress
plannedLoads
currentLoads

项目由步骤组成,而步骤由任务组成。

currentProgress始终为= currentLoads / plannedLoads。

在插入Task之前,我有一个触发器,用于在插入,更新或删除时改善Step currentLoads,而在Step currentLoads上则另一个用于改善Project currentLoads。

因此,如果我更新Task,则调用两个触发器,一个用于更新Step,然后在Project上调用。

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

问题是当我删除项目时。 我还必须删除与之关联的步骤和任务。 因此,将调用Task上的触发器和Delete上的Step触发器,并在Project上调用该触发器。

我不确定我是否清楚。 问我是否可以的细节。

谢谢你的帮助。

这听起来不像是触发器的理想方案-最好将它们用于附加验证(即无法通过约束而不是约束无法完成的事情)/日志记录/完整性检查等,而不是应用程序逻辑。

另外,我将仅使用触发器少量地进行验证,并作为对约束和应用程序验证的补充。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM