かなめのロジック

フリーSEの雑記ブログ。ORACLEやPostgreSQL、情報セキュリティ、金融について主に書いています。

MERGE文、データ登録を更新を1回のSQLで実施

time 2016/02/25

MERGE文、データ登録を更新を1回のSQLで実施

ORACLEにおけるデータ登録と更新を1つのSQLで実現する際に便利なMERGE文について、本記事では解説していきます。
最新のデータで、マスタを一括して登録or更新したい場合に活用できます。

sponsored link

MERGE文の使い方と解説

基本的な使い方

基本的な使い方は以下になります。

解説

MERGE文は、DML文の1つで、元テーブルのデータが先のテーブルに存在すれば更新、存在しなければ登録を1度に行うSQLです。

DML文なので、更新を確定するためには、MERGE後にCOMMITの発行が必要です。(ROLLBACKで戻すことも可能)

あるテーブルの値で、別のテーブルのデータ登録や更新を行う場合、PL/SQL等でカーソル抽出&登録更新を行うか、EXISTSを使った副問い合わせでの一括登録や更新が必要です。
どちらにしても相応の処理になりますが、MERGE文を使用することで比較的シンプルなSQLで実現する事が出来ます。

また、同じテーブルに何度もアクセスする必要が無いため、処理時間も優秀です。
その面からも使う意味があります。

注意点

ON句で指定した項目については、更新が出来ないため注意が必要です。

MERGE文の具体例

以下、MERGE文の具体例です。

まとめ

データ登録と更新を1つのSQLで実現出来るMERGE文について、基本的な構文と具体例を見てきました。
処理時間という面からみても優秀な場面が多いです。
使える場面では使用を検討してみましょう。

関連


sponsored link

管理人

かなめ

フリーの業務系システムエンジニア。情報処理安全確保支援士。 ORACLEと金融と子育ての狭間で、元気に楽しくやってます。 [詳細]

管理人twitter

ブログ村



sponsored link