BeginTrans、CommitTrans、RollbackTrans メソッド

トランザクション メソッドは、Connection オブジェクト内部でのトランザクション処理を次のように操作します。

· BeginTrans メソッドは、新しいトランザクションを開始します。

· CommitTrans メソッドは、変更をすべて保存し、現在のトランザクションを終了します。新しいトランザクションを開始することもあります。

· RollbackTrans は、現在のトランザクションの間に行われた変更をすべてキャンセルし、トランザクションを終了します。新しいトランザクションを開始することもあります。

構文

[level = ] connection.BeginTrans
connection.{CommitTrans | RollbackTrans}

プレースホルダ connection は、開いている Connection オブジェクトを表すオブジェクト変数です。

プレースホルダ level は、BeginTrans メソッドからネストのレベルを示す値が返される長整数型 (Long) の変数です。CommitTrans メソッドおよび RollbackTrans メソッドは、値を返しません。

解説

これらのメソッドは、ソース データに対する一連の変更操作を 1 回の操作単位で保存またはキャンセルしたいときに、Connection オブジェクトとともに使います。たとえば、銀行間で送金処理を行う場合に、一方の口座では金額を減らす処理を行い、もう一方の口座ではそれと同額の金額を増やす処理を行いますが、万一どちらかの更新処理が失敗してしまうと会計上のバランスが保たれなくなってしまいます。このような場合に、開いているトランザクションの内部で変更処理を行えば、変更処理がすべて実行されるか、またはまったく実行されないかのどちらかになることが保証されます。

BeginTrans メソッドを呼び出すと、CommitTrans メソッドまたは RollbackTrans メソッドを呼び出してトランザクションを終了しないかぎり、プロバイダは非同期に変更をコミットしなくなります。

プロバイダがトランザクションのネストをサポートしている場合、開いているトランザクションで BeginTrans メソッドを呼び出すと、新しい、ネストされたトランザクションが開始されます。戻り値は、ネストのレベル (深さ) を示します。たとえば、戻り値 "1" はトップ レベルのトランザクション (ほかのトランザクションの内部にネストされていないトランザクション) を開いていることを示し、戻り値 "2" は第 2 レベルのトランザクション (トップ レベルのトランザクションの内部にネストされているトランザクション) を開いていることを示します。CommitTrans メソッドまたは RollbackTrans メソッドの呼び出しは、直前に開いたトランザクションにのみ作用します。より高いレベルのトランザクションを解決するには、先に現在のトランザクションを閉じるか、またはロールバックする必要があります。

CommitTrans メソッドを呼び出すと、接続上で開いているトランザクション内部で行われた変更をすべて保存し、トランザクションを終了します。RollbackTrans メソッドを呼び出すと、開いているトランザクション内部で行われた変更を保留し、トランザクションを終了します。開いているトランザクションがないときにこれらのメソッドを呼び出すと、エラーになります。

Connection オブジェクトの Attributes プロパティの設定によっては、CommitTrans メソッドまたは RollbackTrans メソッドのどちらかの呼び出しによって新しいトランザクションが自動的に開始されることがあります。Attributes プロパティが adXactCommitRetaining に設定されている場合、ADO は CommitTrans の呼び出しの後に自動的に新しいトランザクションを開始します。Attributes プロパティが adXactAbortRetaining に設定されている場合には、ADO は RollbackTrans の呼び出しの後に自動的に新しいトランザクションを開始します。

対象

Connection

関連項目

Attributes