回答

收藏

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;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则