我已经运行此代码来创建此触发器,因为我需要使用插入TABLE1中的相同序列号的行的UID值更新TABLE2.
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;
Run Code Online (Sandbox Code Playgroud)
触发似乎没有问题,所以我
SET SERVEROUTPUT ON;
Run Code Online (Sandbox Code Playgroud)
然后
INSERT INTO TABLE1 (SEQ, UID) VALUES (47, 'TEST_VALUE');
Run Code Online (Sandbox Code Playgroud)
并获得预期的输出
UPDATE TABLE2 SET UID = TEST_VALUE WHERE SEQ = 47;
Run Code Online (Sandbox Code Playgroud)
因此,正确的值似乎会进入触发器.然后我通过运行检查TABLE2
SELECT SEQ,UID FROM TABLE2 WHERE SEQ = 47;
Run Code Online (Sandbox Code Playgroud)
得到 …