Хотите добавить некоторые условия в оператор MERGE в oracle sql для вставки/обновления
Мне нужно вставить/обновить некоторые RECORDS в таблице target_table. Эти записи идут по одной исходной таблице.
Я использую MERGE для обновления/вставки в target_table. Запрос ниже
MERGE
INTO target_table tgt
USING source_table src
ON ( src.column1 = tgt.column1 and
src.column2 = tgt.column2)
WHEN MATCHED
THEN
UPDATE
SET tgt.column3= src.column3,
tgt.column4 = src.coulmn4
WHEN NOT MATCHED
THEN
INSERT ( tgt.column1,
tgt.column2,
tgt.column3,
tgt.column4 )
VALUES ( src.coulmn1,
src.coulmn2,
src.coulmn3,
src.coulmn4);
Я хочу добавить некоторые особые условия для обновления.
IF target_table.column3 in (val1','val2)
тогда должно быть только обновление, иначе обновление или вставка.
Ответы
Ответ 1
Вы можете просто добавить предложение WHERE
в UPDATE
. Подробнее об этом в документах oracle.
Итак, в вашем случае это должно выглядеть так:
...
WHEN MATCHED
THEN
UPDATE
SET tgt.column3= src.column3,
tgt.column4 = src.coulmn4
WHERE tgt.column3 IN (val1, val2)
WHEN NOT MATCHED
...
Ответ 2
вы можете использовать эту статью для своего вопроса pinal Dava
инструкция MERGE