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

UPSERT 機能を Oracle に実装するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-20 21:47:15172ブラウズ

How Can I Implement UPSERT Functionality in Oracle?

Oracle UPSERT: 技術と実装

Oracle は、UPSERT 操作 (一致基準に基づく同時更新または挿入) をネイティブにサポートしていません。ただし、この機能を効果的に再現する方法がいくつかあります。 一般的で効率的なアプローチでは、MERGE ステートメントを使用します。

MERGE ステートメントは、2 つのテーブル間のデータ操作を容易にします。 DUAL をソーステーブルとして使用すると、簡潔な UPSERT 実装が提供されます。

<code class="language-sql">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;</code>

表とプロシージャ呼び出しを使って説明してみましょう:

<code class="language-sql">drop table mergetest;
create table mergetest(a number, b number);
call ups(10);
call ups(10);
call ups(20);
select * from mergetest;</code>

これにより次の結果が得られます:

<code>A                      B
---------------------- ----------------------
10                     2
20                     1</code>

示されているように、MERGE ベースの UPSERT は既存のレコード (キーと一致) を更新し、新しいレコード (キーが一致しない) を挿入します。この方法は、データの整合性を維持するためのクリーンで効率的な方法を提供します。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。