1
我已經運行此代碼來創建此觸發器,因爲我需要使用插入到TABLE1中的具有相同序列號的行的UID值更新TABLE2。Oracle觸發器不更新
CREATE OR REPLACE TRIGGER TRIG_NAME BEFORE INSERT ON TABLE1 FOR EACH ROW
DECLARE
seq NUMBER(10);
uid CHAR(36);
BEGIN
seq := :new.SEQ;
uid := :new.UID;
UPDATE TABLE2 SET TABLE2.UID = uid WHERE TABLE2.SEQ = seq;
DBMS_OUTPUT.put_line('UPDATE TABLE2 SET UID = '||uid||' WHERE SEQ = '||seq||';');
END;
觸發似乎產生了沒有問題,所以我
SET SERVEROUTPUT ON;
然後
INSERT INTO TABLE1 (SEQ, UID) VALUES (47, 'TEST_VALUE');
,並得到預期的輸出
UPDATE TABLE2 SET UID = TEST_VALUE WHERE SEQ = 47;
所以,正確的價值觀似乎正在進入觸發。然後我檢查TABLE2運行
SELECT SEQ,UID FROM TABLE2 WHERE SEQ = 47;
,並得到
SEQ UID
--- ------------------------------------
47
1 row selected.
有誰看到我要去哪裏錯了嗎?
你做了一個ROLLBACK,即你忘了COMMIT嗎? –
這是同一屆會議。儘管如此,我已經試過運行一個COMMIT,只是可以肯定的。 – user1958756