Adding conditions in MERGE statement in Oracle SQL for INSERT/UPDATE
oracle, sql
Solution
You can simply add `WHERE` clause to `UPDATE`. More about it in oracle docs.
So in your case it should look like:
...
WHEN MATCHED
THEN
UPDATE
SET tgt.column3= src.column3,
tgt.column4 = src.coulmn4
WHERE tgt.column3 IN (val1, val2)
WHEN NOT MATCHED
...
Problem
I have to insert/update some RECORDS in table target_table. These records are coming one source_table. I am using MERGE for update/insert the 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); ``` I want to add some specific condition on update. `IF target_table.column3 in (val1','val2)` then only there should be update, else no update or insert.