ホームページ >データベース >mysql チュートリアル >UPSERT 機能を 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 サイトの他の関連記事を参照してください。