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 サイトの他の関連記事を参照してください。