【发布时间】:2014-01-18 23:43:17
【问题描述】:
我的桌子:
parent (id number)
child (id number, parent_id number, allocation number)
因此,对于每个父级,子表中都有三个固定记录。而且,我需要放置一个验证块来限制用户更新子表中大于 100% 的三个子表中的任何一个的分配(对于任何给定的 parent_id)。
我添加了一个触发器来检查给定 parent_id 的分配总和,如果大于 100% 则引发异常。然而,这导致了一个变异问题。解决此问题的任何设计改进/建议或实现此问题的任何替代方案。
PS:app拦截oracle异常,并将其翻译成 应用程序中的红条错误消息;因此 RAISE_APPLICATION_ERROR 是显示错误信息所必需的。
编辑 1:
这里的问题是应用层,它允许在列表屏幕上进行编辑。可以一次更新多个记录,因此子表上的触发器将被多次触发。在每个触发器实例中,我们还需要检查其他孩子的分配,这会导致变异问题。
【问题讨论】:
-
不管怎样,这里得到了更多的指点..类似的问题陈述link
-
数字3真的固定了吗?
parent表中的每一行在child表中是否正好有 3 个相关行?
标签: oracle validation triggers mutating-table