2
私は別のテーブルからテーブルをupsertする必要があります。ここでMerge into PL SQLトリガーへの別の更新を追加してください
が前のテーブルを更新するために、テーブルMST_LIST
NAME | VER | FLAG
-----+-----+-----
A |201 |1
B |101 |1
そしてTMP_LISTある
T_NAME | T_VER
-------+-------
A |202
C |101
そして私はアップサートするマージを使用。これは私が作成したコードです。
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;
しかし、問題は私がループしている場合を試してみましたが、それでもexcpected結果を得ることができません。この
NAME | VER | FLAG
-----+-----+-----
A |202 |1
B |101 |0
C |101 |1
ような結果を取得するために別の更新
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);
を追加する必要があります。私を助けてください。ありがとう。
ああおかげでたくさんの先生を。その本当に役に立つ。 –