レコードセット: レコードのロック (ODBC)

このトピックの内容は、MFC ODBC クラスに該当します。

このトピックでは、次の内容について説明します。

レコードセットを使用してデータソースのレコードを更新する場合、アプリケーションはレコードをロックして、他のユーザーが同時にレコードを更新できないようにすることができます。 2人のユーザーによって同時に更新されたレコードの状態は、2人のユーザーがレコードを同時に更新できない場合を除いて、定義されていません。

Note

このトピックの内容は、バルク行フェッチが実装されていない CRecordset の派生オブジェクトを対象にしています。 バルク行フェッチを実装している場合は、一部の情報が適用されません。 たとえば、 Edit メンバー関数とメンバー関数を呼び出すことはできません Update 。 バルク行フェッチの詳細については、「レコード セット: バルクデータフェッチ (ODBC)」を参照してください。

Record-Locking モード

データベースクラスには、次の2つの レコードロックモードが用意されています。

  • オプティミスティックロック (既定値)

  • ペシミスティックロック

レコードの更新は、次の3つの手順で行われます。

  1. 操作を開始するには、 Edit メンバー関数を呼び出します。

  2. 現在のレコードの適切なフィールドを変更します。

  3. 操作を終了 — し、通常 — は — メンバー関数を呼び出して更新をコミットします。

オプティミスティックロックは、呼び出し中にのみ、データソースのレコードをロックし Update ます。 マルチユーザー環境でオプティミスティックロックを使用する場合は、アプリケーションでエラー条件を処理する必要があり Update ます。 ペシミスティックロックは、を呼び出した直後にレコードをロックし EditUpdate ます。を呼び出すまで (エラーは、 CDBException によって返される FALSE 値ではなく、機構によって示され Update ます。 ペシミスティックロックは、他のユーザーにとってパフォーマンスが低下する可能性があります。これは、同じレコードへの同時アクセスが、アプリケーションのプロセスが完了するまで待機する必要があるため Update です。

レコードセット内のレコードのロック

レコードセットオブジェクトの ロックモード を既定値から変更する場合は、を呼び出す前にモードを変更する必要があり ます。

レコードセットの現在のロックモードを変更するには

  1. またはを指定して、 Setロックモード メンバー関数を呼び出し CRecordset::optimistic ます。

新しいロックモードは、再度変更するか、レコードセットが閉じられるまで有効なままです。

Note

現在、排他的ロックをサポートしている ODBC ドライバーはほとんどありません。

こちらもご覧ください

レコードセット (ODBC)
レコードセット: 結合の実行 (ODBC)
レコードセット: レコードの追加、更新、および削除 (ODBC)