- - PR -
トランザクション状態の確認(MS SQL Server 7.0 + ADO)
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2006-03-06 14:55
VB 6.0 にて MS SQL Server 7.0 に ADO 接続している状態で以下のようなコードを実行した場合、Execute の実行で構文エラーが発生した場合など、勝手にトランザクションが
ロールバックされてしまう場合があるようですが、この時、ロールバックが行われたかどうかを調べる方法はあるのでしょうか? -------------------------- cn.BeginTrans While(...) ... cn.Execute(sql) ... Loop cn.CommitTrans -------------------------- また、強制的にロールバックが行われるエラーというのは、構文エラー以外に何かあるのでしょうか? 古い環境のお話で申し訳ありませんが、何かご存知の方がおられましたら、情報へのポインタだけでも教えて頂ければ幸いです。 | ||||
|
投稿日時: 2006-03-06 17:18
トランザクション開始からコミットまでの間にエラーが発生すれば、コミットされていない
トランザクションは自動的にロールバックされます。エラーが発生する原因は、構文エラーに 限らず様々な原因が考えられます。 このようなコーディングをする場合、VB6.0であれば、On Error GoToでエラー発生時の処理を 記述し、そこで明示的にロールバックをすべきです。また、エラー発生時点以前の更新について コミットしたいのであれば、その更新ごとにコミットすべきでしょう。 | ||||
|
投稿日時: 2006-03-08 16:55
回答ありがとうございます。
トランザクション中に発生したエラーは無視してコミットするような処理を行いたいと思っていますが、そんな事はできないですよね。 | ||||
|
投稿日時: 2006-03-08 17:37
それはトランザクションとは呼ばないのでは? トランザクションの粒度は自分で決められます。1トランザクション = 1ステートメント にしたらいいんじゃないですか? SQL Server の既定は、そのように振舞う自動コミットモードになってますし。わざわざ、明示的にトランザクションを開始しなければいいだけだと思います。 | ||||
1
