[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 メーリングリストの案内