【问题标题】:Help regarding Triggers关于触发器的帮助
【发布时间】:2011-09-13 19:37:30
【问题描述】:

我有一张桌子 (TableA)。在这个表上,我正在创建一个触发器,它将一行插入到另一个表(TableB)中,用于在 TableA 上进行的插入、更新和删除操作。我的意图是跟踪对 TableA 的修改。

我只有一个触发器来执行此操作。 (在 TableA 上插入或更新或删除之前创建触发器 trig_name ... - 种类)。

现在我需要对表 A 执行的实际操作是什么。当触发器将行插入到表 B 中时,我希望对表 A 执行的实际操作也插入到列中。

是否有可能使用单个触发器捕获在 TableA 上执行的操作,或者我是否必须为每个 DML 语句操作创建单独的触发器?

TIA。

【问题讨论】:

    标签: oracle triggers


    【解决方案1】:

    引用the docs:

    检测触发触发器的 DML 操作

    如果不止一种类型的 DML 操作可以触发触发器(例如,ON INSERT OR DELETE OR UPDATE OF emp),则触发器主体可以使用条件谓词 INSERTING、DELETING 和 UPDATING 来检查触发哪种类型的语句触发器。

    在触发器主体的代码中,您可以根据触发触发器的 DML 操作类型执行代码块:

    IF INSERTING THEN ... END IF;
    IF UPDATING THEN ... END IF;
    

    【讨论】:

      【解决方案2】:

      您可以在 PL/SQL 中使用以下谓词:

      IF INSERTING THEN ... END IF;
      IF UPDATING THEN ... END IF;
      IF DELETING THEN ... END IF;
      

      【讨论】:

        猜你喜欢
        • 2016-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-04
        • 2011-08-27
        • 2014-09-20
        相关资源
        最近更新 更多