異動:異動如何影響更新 (ODBC)
更新資料來源 是在交易期間透過使用編輯緩衝區來管理的(交易外部所使用的相同方法)。 記錄集的欄位資料成員會統稱為包含目前記錄的編輯緩衝區,記錄集會在 或 Edit
期間 AddNew
暫時備份。 Delete
在作業期間,目前記錄不會在交易內備份。 如需有關編輯緩衝區以及如何更新儲存目前記錄的詳細資訊,請參閱 Recordset:Recordsets 如何更新記錄 (ODBC) 。
注意
如果您已實作大量資料列擷取,則無法呼叫 AddNew
、 Edit
或 Delete
。 您必須改為撰寫自己的函式,以對資料來源執行更新。 如需大量資料列擷取的詳細資訊,請參閱 記錄集:大量擷取記錄 (ODBC) 。
在交易期間, AddNew
可以認可或回復 、 Edit
和 Delete
作業。 和 Rollback
的效果 CommitTrans
可能會導致目前的記錄無法還原至編輯緩衝區。 若要確定目前的記錄已正確還原,請務必瞭解 的 和 成員函 CDatabase
式如何使用 CommitTrans
的 update 函式 CRecordset
。 Rollback
CommitTrans 如何影響更新
下表說明交易 CommitTrans
的影響。
CommitTrans 如何影響更新
作業 | 資料來源的狀態 |
---|---|
AddNew 和 Update ,然後 CommitTrans |
新的記錄會新增至資料來源。 |
AddNew (不含 Update ),然後 CommitTrans |
新記錄遺失。 記錄未新增至資料來源。 |
Edit 和 Update ,然後 CommitTrans |
編輯認可至資料來源。 |
Edit (不含 Update ),然後 CommitTrans |
記錄的編輯會遺失。 資料來源上的記錄會保持不變。 |
Delete 然後 CommitTrans |
從資料來源刪除的記錄。 |
回復如何影響交易
下表說明交易 Rollback
的影響。
回復如何影響交易
作業 | 目前記錄的狀態 | 您也必須 | 資料來源的狀態 |
---|---|---|---|
AddNew 和 Update ,然後 Rollback |
目前記錄的內容會暫時儲存,以騰出空間供新記錄使用。 新記錄會輸入至編輯緩衝區。 呼叫 之後 Update ,目前的記錄會還原至編輯緩衝區。 |
所建立 Update 的資料來源會反轉。 |
|
AddNew (不含 Update ),然後 Rollback |
目前記錄的內容會暫時儲存,以騰出空間供新記錄使用。 編輯緩衝區包含新的記錄。 | 再次呼叫 AddNew ,將編輯緩衝區還原為空的新記錄。 或呼叫 Move (0) 將舊值還原至編輯緩衝區。 |
因為 Update 未呼叫,因此不會對資料來源進行變更。 |
Edit 和 Update ,然後 Rollback |
暫時儲存目前記錄的未編輯版本。 編輯會編輯緩衝區的內容。 呼叫 之後 Update ,記錄的未編輯版本仍會暫時儲存。 |
動態集 :向下捲動目前的記錄,然後回到還原未編輯的記錄版本至編輯緩衝區。 快照 集:呼叫 Requery 以從資料來源重新整理記錄集。 |
對資料來源所做的 Update 變更會反轉。 |
Edit (不含 Update ),然後 Rollback |
暫時儲存目前記錄的未編輯版本。 編輯會編輯緩衝區的內容。 | 再次呼叫 Edit ,將記錄的未編輯版本還原至編輯緩衝區。 |
因為 Update 未呼叫,因此不會對資料來源進行變更。 |
Delete 然後 Rollback |
刪除目前記錄的內容。 | 呼叫 Requery 以從資料來源還原目前記錄的內容。 |
從資料來源刪除資料會反轉。 |