[pgsql-jp: 29537] Re: エラー発生時のトランザクションの動作について
sugita @ sra.co.jp
sugita @ sra.co.jp
2003年 4月 1日 (火) 14:32:58 JST
杉田です。
From: 瀬川 真 <segawa @ bwave.co.jp>
Subject: [pgsql-jp: 29535] エラー発生時のトランザクションの動作について
Date: Tue, 01 Apr 2003 13:35:43 +0900
;;; トランザクションのロールバック処理についての質問です。
;;;
;;; 現在、PostgreSQL 7.2.3 を使用して機能の確認を行っております。
;;;
;;; 下記のような順序で作業をした場合、1件もデータが挿入されません。
;;; (1)トランザクション発行
;;; (2)20件のデータをinsert
;;; →5件目のデータは、キー重複によりエラーとなるデータ
;;; 5件目以外は正常なデータ
;;; (3)コミット
;;;
;;; 期待する動作としては、重複データのみ登録されず(当然ですが・・・)
;;; 残りの19件分のデータに関しては登録されるようにしたいということです。
;;; ※1件ずつコミットはしないという前提です。
;;;
;;; Oracle9iでは、上記のような期待する動作となりました。
;;;
;;; そこで、質問ですが、そもそも、PostgreSQLでは、このような動作はさせる
;;; ことができないのでしょうか?
できません。同様に、トランザクション中でデッドロックが発生した場合に、トラン
ザクション中で、少し待ってから、再度実行して通すというようなこともできません。
トランザクション中では、どのようなエラーが発生しても、トランザクションがアボー
ト状態となり、強制的にロールバックされるので、トランザクションを閉じて、再度ト
ランザクションをやり直すことになります。
Kenji Sugita
pgsql-jp メーリングリストの案内