[pgsql-jp: 29565] Re: エラー発生時のトランザクションの動作について
KASAHARA Norio
no @ kasas.org
2003年 4月 2日 (水) 20:29:55 JST
かさはらです。こんにちは。
Ryosuke Hosoi <hosoi @ ryo.com>さん曰く:
》むしろ僕としては、エラーを含むトランザクションでエラー以外を
》commitしてしまうoracleのほうがびっくりなんですけど
》
commit「してしまう」というのは誤解を招く表現ですね。
プログラマーが望むならそうすることもできるということです。
Oracleのデフォルトの動作では、エラーが発生したDMLだけを自動的に
rollbackします。
それ以外のDMLをcommitするか、rollbackするのかはプログラマーのお望み次
第です。
エラーコードを判定して、一意制約違反のようなデータに起因する問題の場合
は、正常なデータを生かし、それ以外、例えばDBMSレベルで異常が発生してい
るようなケースでは全てをrollbackすることもできます。
大量データを一括登録するようなケースでは、1件ずつcommitしているとパフ
ォーマンスが悪いですから、数件まとめてcommitしたいことはよくあります。
そのときに問題のデータだけがrollbackされて、正常なデータはcommitできた
方がプログラマは楽チンであるケースは少なくないです。
--
カさはらのりお no @ kasas.org
pgsql-jp メーリングリストの案内