レコードセット: レコードのロック (ODBC)
このトピックの内容は、MFC ODBC クラスに該当します。
このトピックでは、次の内容について説明します。
レコードセットを使用してデータ ソースのレコードを更新するときに、他のユーザーが同時にレコードを更新しないよう、アプリケーションでレコードをロックできます。 2 人のユーザーが同時にレコードを更新できないことがシステムで保証されない限り、2 人のユーザーによって同時に更新されたレコードの状態は未定義です。
Note
このトピックの内容は、バルク行フェッチが実装されていない CRecordset
の派生オブジェクトを対象にしています。 バルク行フェッチを実装している場合、一部の情報は適用されません。 たとえば、メンバー関数 Edit
と Update
は呼び出すことができません。 バルク行フェッチの詳細については、「レコードセット: バルク行フェッチ (ODBC)」を参照してください。
レコードロック モード
データベース クラスには、次の 2 つのレコードロック モードがあります。
共有ロック (既定値)
排他ロック
レコードの更新は、次の 3 つのステップで行われます。
共有ロックでは、Update
の呼び出し中にのみデータ ソースのレコードをロックします。 マルチユーザー環境で共有ロックを使用する場合、アプリケーションで Update
のエラー状態が処理される必要があります。 排他ロックでは、Edit
を呼び出すとすぐにレコードをロックし、Update
を呼び出すまで解放しません (エラーは Update
で返される FALSE の値ではなく、CDBException
メカニズムを通じて示されます)。 排他ロックを使用すると、他のユーザーのパフォーマンスが低下する可能性があります。同じレコードへの同時アクセスにより、アプリケーションの Update
プロセスが完了するまで待機しなければならない場合があるためです。
レコードセット内のレコードのロック
レコードセットのオブジェクトのロック モードを既定から変更する場合は、Edit
を呼び出す前にモードを変更する必要があります。
レコードセットの現在のロック モードを変更するには
CRecordset::pessimistic
またはCRecordset::optimistic
のいずれかを指定して、SetLockingMode メンバー関数を呼び出します。
新しいロック モードは、再度変更するか、レコードセットを閉じるまで有効なままです。
Note
現時点で、排他ロックに対応している ODBC ドライバーは比較的少数です。
関連項目
レコードセット (ODBC)
レコードセット: 結合 (ODBC)
レコードセット: レコードの追加、更新、削除 (ODBC)