当前位置: 首页 > 面试题库 >

oracle sql: update if exists else insert

束向荣
2023-03-14
问题内容

我有一个表,如果已经存在一条记录,则必须对其进行修改,否则必须插入一条新记录。Oracle sql不接受IF EXISTS,否则我将进行if - update - else - insert查询。我看过了,MERGE但它仅适用于多个表。我该怎么办?


问题答案:

MERGE不需要“多个表”,但确实需要查询作为源。这样的事情应该起作用:

MERGE INTO mytable d
USING (SELECT 1 id, 'x' name from dual) s
ON (d.id = s.id)
WHEN MATCHED THEN UPDATE SET d.name = s.name
WHEN NOT MATCHED THEN INSERT (id, name) VALUES (s.id, s.name);

或者,您可以在PL / SQL中执行此操作:

BEGIN
  INSERT INTO mytable (id, name) VALUES (1, 'x');
EXCEPTION
  WHEN DUP_VAL_ON_INDEX THEN
    UPDATE mytable
    SET    name = 'x'
    WHERE id = 1;
END;


 类似资料:

相关阅读

相关文章

相关问答