我有一个table A
我要插入数据。然后正在进行一些计算,更新相同的table A
。
我想触发一个触发器,在完成数据插入后(插入和更新后)调用Procedure A
。
我该怎么做?
有没有其他方法可以自动执行...或者我必须在Procedure A
完成数据插入后手动运行table A
。
更简单的说,我想知道如何在插入几行和提交后触发触发器,即不是每行。
答案 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;