資料錄集:鎖定資料錄 (ODBC)
本主題適用於 MFC ODBC 類別。
本主題將說明:
當您使用記錄集來更新資料來源上的記錄時,您的應用程式可以鎖定記錄,讓其他使用者無法同時更新記錄。 除非系統可以保證兩位使用者無法同時更新記錄,否則兩位使用者同時更新的記錄狀態為未定義。
注意
本主題適用於衍生自 CRecordset
的物件,其中尚未實作大量資料列擷取。 如果您已實作大量資料列擷取,則部分資訊不適用。 例如,您無法呼叫 Edit
和 Update
成員函式。 如需大量資料列擷取的詳細資訊,請參閱 記錄集:大量擷取記錄 (ODBC) 。
記錄鎖定模式
資料庫類別提供兩 種記錄鎖定模式 :
開放式鎖定 (預設值)
悲觀鎖定
更新記錄會在三個步驟中發生:
您可以呼叫 Edit 成員函式來開始作業。
您可以變更目前記錄的適當欄位。
您可以呼叫 Update 成員函式來結束作業,並通常會認可更新 。
開放式鎖定只會在呼叫期間鎖定資料來源上的 Update
記錄。 如果您在多使用者環境中使用開放式鎖定,應用程式應該處理 Update
失敗狀況。 悲觀鎖定會在您呼叫時鎖定記錄,而且在您呼叫 Edit
Update
之前不會釋放記錄(失敗會透過 CDBException
機制指出,而不是由 傳回 Update
的 FALSE 值表示)。 對其他使用者來說,悲觀鎖定可能會降低效能,因為對相同記錄的平行存取可能必須等到應用程式 Update
程式完成為止。
鎖定記錄集中的記錄
如果您想要從預設變更 recordset 物件的 鎖定模式 ,您必須先變更模式,才能呼叫 Edit
。
若要變更記錄集目前的鎖定模式
- 呼叫 SetLockingMode 成員函式,並
CRecordset::pessimistic
指定 或CRecordset::optimistic
。
新的鎖定模式會維持有效狀態,直到您再次變更它或記錄集關閉為止。
注意
相對較少 ODBC 驅動程式目前支援悲觀鎖定。