苏子叶 发表于 2023-9-14 12:05:25

oracle sql: update if exists else insert

我有一个表,如果已经存在一条记录,则必须对其进行修改,否则必须插入一条新记录。Oracle sql不接受IF EXISTS,否则我会这样做if - update - else - insert查询。我看过,MERGE但它只适用于多个表。我该怎么办?
                                                               
    解决方案:                                                               
                                                                MERGE不需要多表,但确实需要查询作为源。这样的事情应该起作用:
MERGE INTO mytable dUSING (SELECT 1 id,'x' name from dual) sON (d.id = s.id)WHEN MATCHED THEN UPDATE SET d.name = s.nameWHEN NOT MATCHED THEN INSERT (id,name) VALUES (s.id,s.name);或者,你可以在那里PL / SQL执行此操作:
BEGININSERT INTO mytable (id,name) VALUES (1,'x');EXCEPTIONWHEN DUP_VAL_ON_INDEX THEN    UPDATE mytable    SET    name = 'x'    WHERE id = 1;END;
页: [1]
查看完整版本: oracle sql: update if exists else insert