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