Sql Oracle 12c触发器

时间:2017-10-23 15:02:06

标签: sql oracle triggers oracle12c

我需要一些帮助。 我尝试创建一个触发器,只要在特定的表上执行插入,删除或更新操作,就执行一个过程。 这是触发器

CREATE OR REPLACE NONEDITIONABLE TRIGGER NQDI.GAV_TRG 
AFTER INSERT or UPDATE or DELETE ON D_GAV
FOR EACH ROW
BEGIN
    PRC_FILL_D_GAV(:old.report_name);
END;

不幸的是,由于触发器在任何提交完成之前就开始了,我需要从同一个表中读取它,它给了我正在修改的“D_GAV表”无法读取'错误。 此外, FOR EACH ROW 会使每个记录的触发器开始更改,而我希望触发器仅在结束时启动,每次更新,插入或删除都已提交,但我还没有#39 ; t这样做时,找到一种方法来保存:old.report_name 。 我知道我可以通过一个正常运行的过程来做我想做的事情,但是我想避免这种情况。还有其他我无法忽视的解决方案吗?

1 个答案:

答案 0 :(得分:3)

您需要复合触发器。在每个行事件之后,您将数据插入到数组中。在声明之后,您循环访问数据并调用您的过程。

extract_first()