小编典典

Oracle:如何UPSERT(更新或插入到表中?)

sql

UPSERT操作会更新表或在表中插入一行,这取决于表是否已经有与数据匹配的行:

if table t has a row exists that has key X:
    update t set mystuff... where mykey=X
else
    insert into t mystuff...

由于Oracle没有特定的UPSERT语句,执行此操作的最佳方法是什么?


阅读 266

收藏
2021-05-05

共1个答案

小编典典

MERGE(“老式方式”)的替代方法:

begin
   insert into t (mykey, mystuff) 
      values ('X', 123);
exception
   when dup_val_on_index then
      update t 
      set    mystuff = 123 
      where  mykey = 'X';
end;
2021-05-05