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

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

Patricia Arquette
リリース: 2025-01-20 21:39:10
オリジナル
539 人が閲覧しました

How to Perform UPSERT Operations in Oracle Databases?

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

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

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

Oracle は、あるテーブルから別のテーブルにデータをマージする MERGE ステートメントを提供しています。挿入、更新、削除の 3 つの操作が可能です。 DUAL テーブル (単一行と単一列を含む) を使用すると、UPSERT 操作をシミュレートできます。

例:

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;
/
ログイン後にコピー

使用法:

-- 创建必要的表
drop table mergetest;
create table mergetest(a number, b number);

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

-- 验证结果
select * from mergetest;
ログイン後にコピー

出力:

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

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

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

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