CDatabase::BeginTrans
更新 : 2007 年 11 月
接続しているデータ ソースでトランザクションを開始します。
BOOL BeginTrans( );
戻り値
呼び出しが正常に終了し、変更内容が手動でだけコミットされた場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
トランザクションとは、CRecordset オブジェクトの AddNew、Edit、Delete、および Update メンバ関数を 1 つ以上呼び出す一連の操作を指します。トランザクションを開始する前に、OpenEx または Open メンバ関数を呼び出し、CDatabase オブジェクトとデータ ソースを接続しておく必要があります。トランザクションを終了するには、データ ソースへの変更内容をすべて保存する場合は CommitTrans、トランザクション全体を取り消す場合は Rollback を呼び出します。トランザクションに関連するレコードセットをすべて開いてから、実際の更新操作の直前で BeginTrans を呼び出します。
注意 : |
---|
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 を呼び出します。
注意 : |
---|
CommitTrans または Rollback を呼び出さずに BeginTrans を再度呼び出すと、エラーが発生します。 |
使用しているドライバが、特定のデータベースに対するトランザクションをサポートしているかどうかを確認するには、CanTransact メンバ関数を呼び出します。カーソル位置が保持されるかどうかを確認する場合は、GetCursorCommitBehavior および GetCursorRollbackBehavior を呼び出す必要もあります。
トランザクションの詳細については、「トランザクション (ODBC)」を参照してください。
使用例
「トランザクション : レコードセットからのトランザクション実行 (ODBC)」を参照してください。
必要条件
ヘッダー : afxdb.h