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 语句,执行此操作的最佳方法是什么?

最佳答案

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;

关于sql - Oracle:如何 UPSERT(更新或插入表?),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/237327/

10-14 18:58