共用方式為


異動:異動如何影響更新 (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 類別