ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

OracleのMERGE文

2010-06-17 01:20:23 | PG(RDBMS)

久しぶりにOracleのネタ。MERGE文についてメモ。

データが有ればUPDATE、無ければINSERTを実行する構文。
Oracle9iから使えるようになったが、Oracle10g以降で構文が拡張されている。WHERE条件を指定できるようになったのは便利。
何より、Oracle9iではけっこうバグがあるらしい(苦笑)

Oracle10gではDELETE機能が加わったということなので、データの移動が出来るのかと期待したんだけど、そういう訳ではなく。
データ取得元テーブルのデータを消すのではなくて更新先テーブルから条件に応じて削除するものだった。
ドキュメントのDELETEの条件に書かれている「ON句によって定義された結合に含まれない」というのが何を指すのかいまいち理解できないけど…)
…一定件数ずつコミットしつつ特定範囲のデータを全件移動させるには、どういう方法を採るのが一番いいのかなー…?

ちなみにMERGE内のINSERT・UPDATE実行時にトリガーも動くようだが、そこまで試してない。
DELETEはUPDATEされた行に対してだけ適用されるようなので、トリガーがどう動くのか、ちょっと興味はあるけれど(笑)



最新の画像もっと見る

コメントを投稿