Вставка записей в таблицу с одновременной проверкой и изменением в случае наличия записи в принимающей таблице MERGE в Oracle (MERGE INTO TABLE)
MERGE — Функция предназначенная для объединения результата некоторой выборки в принимающую таблицу, при этом вовсе не обязательно чтобы состав полей совпадал.
Применяется когда необходимо дополнить некоторую таблицу новыми данными, одновременно обновив уже имеющиеся в таблице данные.
Реализация:
merge into таблица_приемник t1
using (select * from таблица_источник) t2
on (t1.id = е2.id and t1.parent_id = t2.parent_id)
when matched then
-- Обновляем если совпадение в таблице t1 найдено
update
set t1.info = t2.info
when not matched then
-- Добавляем если совпадение в таблице t1 не найдено
insert
(t1.id, t1.parent_id, t1.info)
values
(t2.id, t2.parent_id, t2.info);