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