在 BEFORE EACH ROW 中,UPDATE 陳述句 SET 欄位對應的 :new 值為空,
AFTER EACH ROW 中則可以取到 :new 的值。
如:
CREATE OR REPLACE TRIGGER tr_table1_ct
FOR INSERT OR UPDATE OR DELETE ON table1
COMPOUND TRIGGER
BEFORE STATEMENT IS BEGIN END BEFORE STATEMENT;*/
BEFORE EACH ROW IS BEGIN
dbms_output.put_line('BEFORE EACH ROW '
||'/col1:'||:old.col1
||'/col1:'||:new.col1
);
END BEFORE EACH ROW ;
AFTER EACH ROW IS BEGIN
dbms_output.put_line('AFTER EACH ROW'
||'/col1:'||:old.col1
||'/col1:'||:new.col1
);
END AFTER EACH ROW ;
END tr_table1_ct;
UPDATE table1
SET col1 = 'test'
WHERE id = 123
;--這時 BEFORE EACH ROW 中 :new.col1 為空
--如果 UPDATE 不用 col1
UPDATE table1
SET col2 = '222'
WHERE id = 123
;--這時 BEFORE EACH ROW 中 :new.col1 不為空
uj5u.com熱心網友回復:
1、該表是否存在其他的觸發器。2、第一步,你確定是否 執行的是 update? 如果是 insert 才會有這個現象。
uj5u.com熱心網友回復:
沒有其他觸發器。update 改變欄位的結果也是 :new 值為空。
insert 表現正常
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/13109.html
標籤:開發
