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

Oracle データベースで UPSERT 操作を実行するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-20 21:39:10560ブラウズ

How to Perform UPSERT Operations in Oracle Databases?

Oracle データベースで UPSERT 操作を実行します

UPSERT 操作 (更新と挿入の組み合わせ) は、テーブル内のデータを変更します。 Oracle には専用の UPSERT ステートメントがないため、これを効率的に実行する方法が問題になります。

解決策: MERGE ステートメント

Oracle は、あるテーブルから別のテーブルにデータをマージする MERGE ステートメントを提供しています。挿入、更新、削除の 3 つの操作が可能です。 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);

-- 调用过程以执行UPSERT
call ups(10);
call ups(10);
call ups(20);

-- 验证结果
select * from mergetest;</code>

出力:

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

この MERGE ステートメントは、指定されたキー (xa) に一致する行が存在する場合はその行が更新され、そうでない場合は新しい行が挿入されます。

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

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