Подтвердить что ты не робот

Хотите добавить некоторые условия в оператор 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)

тогда должно быть только обновление, иначе обновление или вставка.

4b9b3361

Ответ 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