On UPDATE 触发器 - 在其自身执行期间触发?
On UPDATE Trigger - Triggered during its own Execution?
我有以下触发器定义
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;
/
触发器打算在以下场景中执行
- 在 OUT_TAB 或
中插入一条记录
- 更新字段 OC ON OUT_TAB
在触发器体内,字段 OC 本身已更新。该更新是否会为此再次(递归)调用触发器?
我需要对其进行编码以避免递归吗?
不,不会,这会很好,当您设置 :NEW.OC 的值时,这实际上并没有更新 table,只有触发代码完成后才会 table updated/inserted 使用您设置的值:NEW.OC 到
我有以下触发器定义
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;
/
触发器打算在以下场景中执行
- 在 OUT_TAB 或 中插入一条记录
- 更新字段 OC ON OUT_TAB
在触发器体内,字段 OC 本身已更新。该更新是否会为此再次(递归)调用触发器?
我需要对其进行编码以避免递归吗?
不,不会,这会很好,当您设置 :NEW.OC 的值时,这实际上并没有更新 table,只有触发代码完成后才会 table updated/inserted 使用您设置的值:NEW.OC 到