[英]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.