私はmain
データベースとreport
データベースを持っており、main
からreport
にテーブルを同期する必要があります。Oracle SQLでMERGEを実行すると、SOURCEに一致しない行を更新するにはどうすればよいですか?
ただし、main
データベースでアイテムが削除された場合は、report
データベースにIsDeleted
フラグを設定するだけです。
これを行うにはどうすればよいでしょうか?私は現在、このように、MERGE文を使用してい
:
MERGE INTO report.TEST target
USING (SELECT * FROM main.TEST) source
ON (target.ID = source.ID)
WHEN MATCHED THEN
UPDATE SET (target... = source...)
WHEN NOT MATCHED THEN
INSERT (...) VALUES (source...)
;
WHEN NOT MATCHED
文はmain
から私にすべての新しい値を与えるが、私はまた、report
からすべての古い値を更新します。
私はOracle PL/SQLを使用しています。
'main.test'をどの値で更新しますか?あなたはどこから彼らを得るでしょうか? –
行が 'main.test'から削除された場合、対応する' report.test'行は不一致です。不一致の行に対して 'report.test.IsDeleted'フラグを設定したいと思います。 –
根底にあるJOINの結果( 'using(...)')にはその行が含まれないため、これは可能ではないと思います。そのデータはどこから来るべきですか? –