【问题标题】:On UPDATE Trigger - Triggered during its own Execution?On UPDATE Trigger - 在其自身执行期间触发?
【发布时间】:2015-10-17 21:39:39
【问题描述】:

我有以下触发器定义

PROMPT CREATE OR REPLACE TRIGGER C_BUSINESS_TABLE
CREATE OR REPLACE TRIGGER C_BUSINESS_TABLE
BEFORE INSERT OR UPDATE OF OC ON OUT_TAB FOR EACH ROW
DECLARE
    v_OC OUT_TAB.OC%type;
BEGIN
    SELECT OC into v_OC from ORDERS WHERE ORDER_ID=:NEW.ORDER_ID and ORDER_SEQ=:NEW.ORDER_SEQ and rownum=1;
    IF :NEW.OC != v_OC and v_OC is not NULL THEN
      :NEW.OC:=v_OC;
    END IF;
  EXCEPTION
    WHEN OTHERS THEN NULL;
END;
/

触发器打算在以下场景中执行

  1. 在 OUT_TAB OR 中插入记录
  2. 在 OUT_TAB 上更新 OC 字段

在触发器主体内,字段 OC 本身已更新。该更新会再次(并递归地)调用触发器吗?

我是否需要对其进行编码以避免递归?

【问题讨论】:

    标签: oracle plsql oracle11g oracle10g


    【解决方案1】:

    不会,这很好,当您设置 :NEW.OC 的值时,这实际上并没有更新表,只有在触发代码完成后,才会使用您设置的值更新/插入表: NEW.OC到

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 2013-08-23
      相关资源
      最近更新 更多