2015-10-20 67 views
0

我翻閱官方文檔。與現有的線程,但無法弄清楚時將以下觸發執行:多列更新

CREATE OR REPLACE TRIGGER TRIG_TS_TRANSPORT_AFTER 
    AFTER INSERT OR 
     UPDATE OF iud, addressid, idd, rld, pickupaddressid, vessel 
    ON chassitransports 
    REFERENCING NEW AS new OLD AS old 
    FOR EACH ROW 
. 
. 
. 
  1. 更新
  2. 所有列的列中的任何一個被更新

由於更新從外部數據庫發生,我無法測試上述情況:|

+1

我的理解它會在插入*任何*行或更新後*之後觸發*提到的*列之一 – Hawk

回答

0

它應該在插入行之後或在任何提到的列的UPDATE之後觸發。看下面的例子:

---- Create sample Tables 
CREATE TABLE temptable1 (regNo VARCHAR2(20), timec TIMESTAMP(6)); 

create table TEMPTABLE2 
(
    idx NUMBER, 
    regno VARCHAR2(20), 
    eventb VARCHAR2(20), 
    timec DATE, 
    rfid NUMBER 
); 

----- Trigger definition 
CREATE OR REPLACE TRIGGER after_update_tr 
AFTER UPDATE OF timec, regNo ON temptable2 

FOR EACH ROW 
BEGIN 

INSERT INTO temptable1 
VALUES(:NEW.regNo, 
:NEW.timec); 

EXCEPTION WHEN OTHERS THEN 
dbms_output.put_line(sqlerrm); 

END; 

------ Fire update statement ---- 
UPDATE temptable2 
SET regNo = 'VISIT0000011' 
WHERE timec IS NULL; 

它成功執行。