[pgsql-jp: 35576] Re: libpqxx ライブラリを使用したトランザクション制御について
堀越
horihorikoshi @ yahoo.co.jp
2005年 6月 24日 (金) 16:29:01 JST
板垣さん、お返事ありがとうございます。
> workの作成は初回のみで、毎回 work::commit()
> すれば良いように見えます。
> while(...){
> ExecSQL(W, ...);
> W.commit();
> }
> のような使い方ができるでしょうか?
→ この方法は以前に試したのですが、W.commit()後には、そ
のオブジェクトを使用して、いかなるSQLも発行できないよう
になっているようです。以下のような例外が発生します。
Attempt to execute query in committed transaction<READ
COMMITTED>
> もしくは、自動的にトランザクションが開始されているよう
なので、
> それを抑制するようなオプションはありますか?
→ トランザクションは最初のW.exec(SQL文)が発行されたとき
に開始されるようです。オプション指定としては、コンストラ
クタがwork W(コネクションオブジェクト,トランザクション名)
となっていて、トランザクション名以外には特にオプションし
てはできないようです(libpqxxライブラリに関しては、英語
のドキュメントしかないのでもしかしたら見逃しているかもし
れません...)。
現状では、ループ内で呼んでいる関数ExecSQL内で毎回workオ
ブジェクトの生成と破棄をするようにして対応しております(
正確にはまだ計測していませんが、若干処理速度が気になって
います)。
__________________________________
Save the earth
http://pr.mail.yahoo.co.jp/ondanka/
pgsql-jp メーリングリストの案内