次の方法で共有


CDatabase::BeginTrans

更新 : 2007 年 11 月

接続しているデータ ソースでトランザクションを開始します。

BOOL BeginTrans( );

戻り値

呼び出しが正常に終了し、変更内容が手動でだけコミットされた場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

トランザクションとは、CRecordset オブジェクトの AddNewEditDelete、および Update メンバ関数を 1 つ以上呼び出す一連の操作を指します。トランザクションを開始する前に、OpenEx または Open メンバ関数を呼び出し、CDatabase オブジェクトとデータ ソースを接続しておく必要があります。トランザクションを終了するには、データ ソースへの変更内容をすべて保存する場合は CommitTrans、トランザクション全体を取り消す場合は Rollback を呼び出します。トランザクションに関連するレコードセットをすべて開いてから、実際の更新操作の直前で BeginTrans を呼び出します。

123fbk21.alert_caution(ja-jp,VS.90).gif注意 :

ODBC ドライバによっては、BeginTrans を呼び出す前にレコードセットを開くと、Rollback の呼び出し時にエラーが発生する場合があります。このため、使用しているドライバを確認する必要があります。たとえば、Microsoft ODBC Desktop Driver Pack 3.0 に付属している Microsoft Access ドライバを使用している場合は、Jet データベース エンジンの要件を考慮する必要があります。Jet データベース エンジンでは、カーソルが開いた状態のデータベースではトランザクションを開始できません。MFC データベース クラスでは、カーソルを開くことは CRecordset オブジェクトを開くことを意味します。詳細については、「テクニカル ノート 68: Microsoft Access 7 ODBC ドライバでのトランザクションの実行」を参照してください。

BeginTrans は、同時要求やデータ ソースの機能に応じて、サーバー側でもデータ レコードをロックする場合があります。データのロックの詳細については、「レコードセット : レコードのロック (ODBC)」を参照してください。

ユーザー定義のトランザクションの詳細については、「トランザクション (ODBC)」を参照してください。

一連のトランザクション処理をロールバックした (元に戻した) 場合、データ ソースは、BeginTrans を呼び出したときの状態に戻ります。ロールバック後の状態を新しく設定するには、現在のトランザクションをすべてコミットしてから、もう一度 BeginTrans を呼び出します。

123fbk21.alert_caution(ja-jp,VS.90).gif注意 :

CommitTrans または Rollback を呼び出さずに BeginTrans を再度呼び出すと、エラーが発生します。

使用しているドライバが、特定のデータベースに対するトランザクションをサポートしているかどうかを確認するには、CanTransact メンバ関数を呼び出します。カーソル位置が保持されるかどうかを確認する場合は、GetCursorCommitBehavior および GetCursorRollbackBehavior を呼び出す必要もあります。

トランザクションの詳細については、「トランザクション (ODBC)」を参照してください。

使用例

トランザクション : レコードセットからのトランザクション実行 (ODBC)」を参照してください。

必要条件

ヘッダー : afxdb.h

参照

参照

CDatabase クラス

階層図

CDatabase::CommitTrans

CDatabase::Rollback

CRecordset::CanTransact

その他の技術情報

CDatabase のメンバ