[pgsql-jp: 29013] Re: libpgvbで、upda te 結果を知る方法
Hiroshi Inoue
Inoue @ tpf.co.jp
2003年 2月 12日 (水) 10:50:52 JST
井上です。
Hiroshi Saito wrote:
>
> さいとうです。
>
> 言われる前にテストサンプルです。(^_^;)
>
> > VBA+ODBCでもトランザクションの処理はできます。
> > いろいろやり方はあるかと思いますが、問題なく使えている方法として
> > ダイレクトSQLで処理できています。
> > たとえVBAで待たせていてもきちんとトランザクションとして動作します。
> > (デッドロックもちゃんとします(^_^;))
ODBCを使用する場合の正しい?トランザクションへの移行処理は
SQLSetConnectOption(.., SQL_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF);
の発行です。この後のqueryはすべてトランザクション内で実行
されます。トランザクションを終了するには
SQLTransact(.., .., SQL_COMMIT/SQL_ROLLBACK);
を発行します。その後のqueryはまた新しいトランザクション内で
処理されます。トランザクション内処理を回避するには
SQLSetConnectOption(.., SQL_AUTOCOMMIT, SQL_AUTOCOMMIT_ON);
を発行する必要があります。
ODBCドライバへのBEGIN/ENDの発行はおすすめできません。
私にはBEGINが発行された後AUTOCOMMITモードの取り扱いを
どうすべきなのかわかりません。今の所、BEGINの発行に
よってAUTOCOMMITモードを変更はしないので、ドライバが
思わぬ所でCOMMITを自動発行する可能性があると思います。
Hiroshi Inoue
http://www.geocities.jp/inocchichichi/psqlodbc/
pgsql-jp メーリングリストの案内