小编use*_*756的帖子

Oracle触发器不会更新

我已经运行此代码来创建此触发器,因为我需要使用插入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)

得到 …

oracle triggers oracle11g

1
推荐指数
1
解决办法
50
查看次数

标签 统计

oracle ×1

oracle11g ×1

triggers ×1