我有一个表t1,有两列t1c1和t1c2, 如果在t1c1或t1c2上进行了更新,则需要计算一个值并在另一个表t2上更新该值(在计算过程中不使用) 此计算需要一些表,包括t1(因为更新t1c1或t1c2可以更改值,如果您愿意,它们是计算的参数...) 问题是,对t1执行SELECT会导致“变异表错误”,因为t1是“事件”。 我可以使用“ PRAGMA AUTONOMOUS_TRANSACTION”,但是,我必须在触发器中“提交”,因此如果回滚,则不会回滚我的触发器操作... 而且看不到更新的行,这会导致错误的计算... 我可以使用“复合触发器”,在“每行之后”添加一个变量数据,然后在“ after语句”中进行计算吗? 我可以在“ after statement”中看到更新还是仅提交什么? 如果进行回滚修改t1c1或t1c2,我可以不提交“ after statement”吗?
非常感谢您,我的英语很抱歉。...
答案 0 :(得分:0)
在语句级触发器(即具有“用于每一行”的语句)中,将您的键级信息添加到PL / SQL数组中。我通常会创建一个包来保存此类PL / SQL数组,并带有轻松添加行等的函数。