ホームページ > データベース > mysql チュートリアル > Oracle DatabaseでUPSERT操作を実行するにはどうすればよいですか?

Oracle DatabaseでUPSERT操作を実行するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-20 21:28:15
オリジナル
302 人が閲覧しました

How Can I Perform an UPSERT Operation in Oracle Database?

Oracle データベースでの UPSERT 操作

UPSERT (テーブルへの更新または挿入) 操作は、一致するデータを持つ行が存在するかどうかに基づいて、既存の行を変更したり、テーブルに新しい行を追加したりする便利な方法を提供します。

Oracle Database における UPSERT の課題

他のデータベースとは異なり、Oracle は専用の UPSERT ステートメントを提供しません。この問題を解決するには、複数のデータ ソースからのデータを結合するための強力なメカニズムである MERGE ステートメントを使用します。

MERGE を使用して Oracle UPSERT 操作を実行します

MERGE ステートメントは 2 つのテーブルを操作します。1 つはターゲット テーブル (ここでは mergetest) として、もう 1 つはプレースホルダー (DUAL) として操作します。このテクノロジーを使用すると、UPSERT 関数を実装できます。

  1. MERGE into mergetest m using Dual on (a = xa): この行はターゲット テーブルを識別し、列 "a" に基づいて結合条件を確立します。
  2. 一致しない場合は、(a,b) 値 (xa,1) を挿入します。この挿入句は、「mergetest」、Where 列に一致する行が見つからない場合に新しい行を作成します。 「a」は「xa」に設定され、列「b」は 1 に設定されます。
  3. when matched then update set b = b 1: この update 句は、一致する行が見つかった場合、列 "b" の値を 1 ずつ増分します。

実装例

次のコードを考えてみましょう:

create or replace procedure ups(xa number) as 
begin 
  merge into mergetest m using dual on (a = xa) 
  when not matched then insert (a,b) values (xa,1) 
  when matched then update set b = b+1; 
end ups;
/
ログイン後にコピー

このプロシージャは、UPSERT 操作を実行する関数を定義します。

使用法:

call ups(10);
call ups(10);
call ups(20);
select * from mergetest;
ログイン後にコピー

出力:

<code>A                      B
---------------------- ----------------------
10                     2
20                     1</code>
ログイン後にコピー

結論

MERGE ステートメントを使用すると、Oracle で UPSERT 関数を効果的に実装でき、一致する行が存在するかどうかに基づいてテーブル内のデータを変更または挿入できるようになります。

以上がOracle DatabaseでUPSERT操作を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート