Как при выполнении MERGE в Oracle SQL обновить строки, которые не совпадают в SOURCE?

У меня есть база данных mainи база данных report, и мне нужно синхронизировать таблицу из mainв report.

Однако, когда элемент удаляется в базе данных main, я хочу только установить флаг IsDeletedв базе данных report.

Какой элегантный способ сделать это?

В настоящее время я использую оператор 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, но я также хочу обновить все СТАРЫЕ значения из отчета .

Я использую Oracle PL/SQL.

14
задан Burhan Ali 11 May 2012 в 14:02
поделиться