oracle sql: update if exists else insert
技术问答
238 人阅读
|
0 人回复
|
2023-09-14
|
我有一个表,如果已经存在一条记录,则必须对其进行修改,否则必须插入一条新记录。Oracle sql不接受IF EXISTS,否则我会这样做if - update - else - insert查询。我看过,MERGE但它只适用于多个表。我该怎么办?. w4 i$ E0 w( m* j( v4 i
( p2 y# ~# e: P+ C+ R7 a. W1 f6 k
解决方案: : G. t/ m7 J8 L$ m/ h6 z
MERGE不需要多表,但确实需要查询作为源。这样的事情应该起作用:
! O* T! ?+ Z, AMERGE 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执行此操作:% n9 ^/ `" v# R2 r2 L
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; |
|
|
|
|
|