【问题标题】:How to fire a trigger after finishing data insert in a table完成表中的数据插入后如何触发触发器
【发布时间】:2011-12-30 07:24:07
【问题描述】:

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

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

我该怎么做?

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


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

【问题讨论】:

  • 为什么更新后触发器对您没有帮助? (不是每个;一个语句触发器)

标签: oracle plsql triggers oracle9i


【解决方案1】:

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

如果我没听错的话,你想在一堆语句之后触发触发器吗?不要以为你可以。即使可以,我也宁愿不做。它们分散了您的程序流程/逻辑,使您以后更难理解您的软件是如何工作的。

问候

【讨论】:

  • 我认为你是对的......我也没有在互联网上找到任何东西......会尝试任何其他选择......无论如何谢谢......
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    在表格中添加一列:例如“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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 2015-02-04
      • 1970-01-01
      • 2016-01-27
      相关资源
      最近更新 更多