[pgsql-jp: 35574] Re: libpqxx ライブラリを使用したトランザクション制御について

ITAGAKI Takahiro itagaki.takahiro @ lab.ntt.co.jp
2005年 6月 24日 (金) 15:55:20 JST


板垣です。
libpqxx は使ったことがないので、間違っていたらすみません。

堀越 <horihorikoshi @ yahoo.co.jp> wrote:

> 下記のようなループ中で複数のSQLを実行するようなC++のプロ
> グラムにおいて、途中でsql_error例外が発生してしまうと、
> それまでのSQLの実行がすべてabortされてしまいます。

work は PostgreSQL のトランザクションと対応する概念だと思ってよいですか?
それなら、途中でエラーが起きたらすべてロールバックされるのは自然だと思います。

> 例外を発生したSQLを実行してもトランザクションがabortされ
> ずに、正常に通ったSQLの実行結果はテーブルに反映させるよ
> うにするにはどのようにすれば良いのでしょうか?

workの作成は初回のみで、毎回 work::commit() すれば良いように見えます。
    while(...){
        ExecSQL(W, ...);
        W.commit();
    }
のような使い方ができるでしょうか?
もしくは、自動的にトランザクションが開始されているようなので、
それを抑制するようなオプションはありますか?

------------------------------------------------------------
NTTサイバースペース研究所 OSSコンピューティングプロジェクト
板垣貴裕 <itagaki.takahiro @ lab.ntt.co.jp>





pgsql-jp メーリングリストの案内