次の方法で共有


CDatabase::BeginTrans

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

BOOL BeginTrans( );

戻り値

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

解説

トランザクションとは、CRecordset オブジェクトの AddNewEditDelete、および 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

参照

参照

CDatabase クラス

階層図

CDatabase::CommitTrans

CDatabase::Rollback

CRecordset::CanTransact

その他の技術情報

CDatabase のメンバー