1. ホーム
  2. sql

[解決済み】オラクル:UPSERTする方法(テーブルへの更新または挿入?)

2022-03-27 23:46:09

質問

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;