分享方式:


異動:異動如何影響更新 (ODBC)

更新資料來源 是在交易期間透過使用編輯緩衝區來管理的(交易外部所使用的相同方法)。 記錄集的欄位資料成員會統稱為包含目前記錄的編輯緩衝區,記錄集會在 或 Edit 期間 AddNew 暫時備份。 Delete在作業期間,目前記錄不會在交易內備份。 如需有關編輯緩衝區以及如何更新儲存目前記錄的詳細資訊,請參閱 Recordset:Recordsets 如何更新記錄 (ODBC)

注意

如果您已實作大量資料列擷取,則無法呼叫 AddNewEditDelete 。 您必須改為撰寫自己的函式,以對資料來源執行更新。 如需大量資料列擷取的詳細資訊,請參閱 記錄集:大量擷取記錄 (ODBC)

在交易期間, AddNew 可以認可或回復 、 EditDelete 作業。 和 Rollback 的效果 CommitTrans 可能會導致目前的記錄無法還原至編輯緩衝區。 若要確定目前的記錄已正確還原,請務必瞭解 的 和 成員函 CDatabase 式如何使用 CommitTrans 的 update 函式 CRecordsetRollback

CommitTrans 如何影響更新

下表說明交易 CommitTrans 的影響。

CommitTrans 如何影響更新

作業 資料來源的狀態
AddNewUpdate ,然後 CommitTrans 新的記錄會新增至資料來源。
AddNew (不含 Update ),然後 CommitTrans 新記錄遺失。 記錄未新增至資料來源。
EditUpdate ,然後 CommitTrans 編輯認可至資料來源。
Edit (不含 Update ),然後 CommitTrans 記錄的編輯會遺失。 資料來源上的記錄會保持不變。
Delete 然後 CommitTrans 從資料來源刪除的記錄。

回復如何影響交易

下表說明交易 Rollback 的影響。

回復如何影響交易

作業 目前記錄的狀態 您也必須 資料來源的狀態
AddNewUpdate ,然後 Rollback 目前記錄的內容會暫時儲存,以騰出空間供新記錄使用。 新記錄會輸入至編輯緩衝區。 呼叫 之後 Update ,目前的記錄會還原至編輯緩衝區。 所建立 Update 的資料來源會反轉。
AddNew (不含 Update ),然後 Rollback 目前記錄的內容會暫時儲存,以騰出空間供新記錄使用。 編輯緩衝區包含新的記錄。 再次呼叫 AddNew ,將編輯緩衝區還原為空的新記錄。 或呼叫 Move (0) 將舊值還原至編輯緩衝區。 因為 Update 未呼叫,因此不會對資料來源進行變更。
EditUpdate ,然後 Rollback 暫時儲存目前記錄的未編輯版本。 編輯會編輯緩衝區的內容。 呼叫 之後 Update ,記錄的未編輯版本仍會暫時儲存。 動態集 :向下捲動目前的記錄,然後回到還原未編輯的記錄版本至編輯緩衝區。

快照 集:呼叫 Requery 以從資料來源重新整理記錄集。
對資料來源所做的 Update 變更會反轉。
Edit (不含 Update ),然後 Rollback 暫時儲存目前記錄的未編輯版本。 編輯會編輯緩衝區的內容。 再次呼叫 Edit ,將記錄的未編輯版本還原至編輯緩衝區。 因為 Update 未呼叫,因此不會對資料來源進行變更。
Delete 然後 Rollback 刪除目前記錄的內容。 呼叫 Requery 以從資料來源還原目前記錄的內容。 從資料來源刪除資料會反轉。

另請參閱

異動 (ODBC)
異動:在一個資料錄集內執行異動 (ODBC)
CDatabase 類別
CRecordset 類別