如何在表中完成数据插入后触发触发器

时间:2011-12-30 07:24:08

标签: oracle plsql triggers oracle9i

我有一个table A我要插入数据。然后正在进行一些计算,更新相同的table A

我想触发一个触发器,在完成数据插入后(插入和更新后)调用Procedure A

我该怎么做?

有没有其他方法可以自动执行...或者我必须在Procedure A完成数据插入后手动运行table A


更简单的说,我想知道如何在插入几行和提交后触发触发器,即不是每行。

3 个答案:

答案 0 :(得分:4)

您可以为每行或每个语句定义触发器(FOR EACH ROW选项)。

如果我理解你的话,你想在一堆陈述之后解雇扳机?不要以为你可以。即使你可以,我宁愿不去做。它们会分散您的程序流程/逻辑,并使您以后更难理解您的软件如何工作。

此致

答案 1 :(得分:3)

如果我正确理解了您的问题,您希望在完成包含多个插入/更新语句的事务后触发器触发吗?如果是这种情况,我认为您应该考虑在插入/更新操作完成后立即在程序流程中调用Procedure A

换句话说:只有在为每一行或每个语句调用触发器时,触发器才有用。

答案 2 :(得分:0)

在表格中添加一列:例如“FINAL_ACTION”。保持此栏不受影响,直到您预期的最终行动。然后只有这个子句触发你的触发器:

REFERENCING NEW AS NEWREC OLD AS OLDREC
FOR EACH ROW
WHEN (NEWREC.FINAL_ACTION <> OLDREC.FINAL_ACTION)
DECLARE
     --YOUR DECLARATIONS
BEGIN
     --DO SOMETHING
END;