2
我必須從另一個表中插入表。添加另一個更新合併到PL SQL觸發器
下面是表MST_LIST
NAME | VER | FLAG
-----+-----+-----
A |201 |1
B |101 |1
而且TMP_LIST更新上表
T_NAME | T_VER
-------+-------
A |202
C |101
我用合併來UPSERT。這是我創建的代碼。
create or replace TRIGGER MST_LIST_TRIG
AFTER INSERT OR UPDATE ON TMP_LIST
FOR EACH ROW
BEGIN
MERGE INTO MST_LIST USING DUAL ON (NAME = :NEW.T_NAME)
WHEN MATCHED THEN UPDATE SET
VER = :NEW.T_VER
WHEN NOT MATCHED THEN INSERT (NAME, VER, FLAG_ACTIVE)
VALUES (:NEW.T_NAME, :NEW.T_VER, 1);
END MST_LIST_TRIG;
但問題是我需要添加其他更新
update MST_LIST set FLAG = 0 where NOT EXISTS
(SELECT TMP_LIST.T_NAME FROM TMP_LIST WHERE MST_LIST.NAME = TMP_LIST.T_NAME);
拿到導致這樣
NAME | VER | FLAG
-----+-----+-----
A |202 |1
B |101 |0
C |101 |1
我試過循環和如果,但仍不能得到excpected結果。請幫幫我。謝謝。
哦,非常感謝主席先生。它真的很有幫助。 –