レコードセット: レコードのロック (ODBC)
このトピックの内容は、MFC ODBC クラスに該当します。
このトピックでは、次の内容について説明します。
レコードセットを使用してデータソースのレコードを更新する場合、アプリケーションはレコードをロックして、他のユーザーが同時にレコードを更新できないようにすることができます。 2人のユーザーによって同時に更新されたレコードの状態は、2人のユーザーがレコードを同時に更新できない場合を除いて、定義されていません。
Note
このトピックの内容は、バルク行フェッチが実装されていない CRecordset の派生オブジェクトを対象にしています。 バルク行フェッチを実装している場合は、一部の情報が適用されません。 たとえば、 Edit メンバー関数とメンバー関数を呼び出すことはできません Update 。 バルク行フェッチの詳細については、「レコード セット: バルクデータフェッチ (ODBC)」を参照してください。
Record-Locking モード
データベースクラスには、次の2つの レコードロックモードが用意されています。
オプティミスティックロック (既定値)
ペシミスティックロック
レコードの更新は、次の3つの手順で行われます。
操作を開始するには、 Edit メンバー関数を呼び出します。
現在のレコードの適切なフィールドを変更します。
操作を終了 — し、通常 — は — メンバー関数を呼び出して更新をコミットします。
オプティミスティックロックは、呼び出し中にのみ、データソースのレコードをロックし Update ます。 マルチユーザー環境でオプティミスティックロックを使用する場合は、アプリケーションでエラー条件を処理する必要があり Update ます。 ペシミスティックロックは、を呼び出した直後にレコードをロックし EditUpdate ます。を呼び出すまで (エラーは、 CDBException によって返される FALSE 値ではなく、機構によって示され Update ます。 ペシミスティックロックは、他のユーザーにとってパフォーマンスが低下する可能性があります。これは、同じレコードへの同時アクセスが、アプリケーションのプロセスが完了するまで待機する必要があるため Update です。
レコードセット内のレコードのロック
レコードセットオブジェクトの ロックモード を既定値から変更する場合は、を呼び出す前にモードを変更する必要があり ます。
レコードセットの現在のロックモードを変更するには
- またはを指定して、 Setロックモード メンバー関数を呼び出し
CRecordset::optimisticます。
新しいロックモードは、再度変更するか、レコードセットが閉じられるまで有効なままです。
Note
現在、排他的ロックをサポートしている ODBC ドライバーはほとんどありません。
こちらもご覧ください
レコードセット (ODBC)
レコードセット: 結合の実行 (ODBC)
レコードセット: レコードの追加、更新、および削除 (ODBC)