共用方式為


資料來源的更新是透過使用編輯緩衝區 (和交易外使用的方法相同) 在交易中管理的。 全體的資料錄集欄位資料成員 (Field Data Member) 是做為包含目前資料錄的一個編輯緩衝區,在此資料錄集於 AddNewEdit 期間將暫時地備份。 在 Delete 作業時,不會將目前的資料錄在交易內備份。 如需編輯緩衝區和更新如何儲存目前資料錄的詳細資訊,請參閱資料錄集:資料錄集如何更新資料錄 (ODBC)

注意事項注意事項

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

在交易期間,可以認可或復原 AddNewEditDelete 作業。 CommitTransRollback 的效果可能造成目前的資料錄無法還原成編輯緩衝區。 必須了解 CDatabaseCommitTransRollback 成員函式是如何使用 CRecordset 的更新函式,才能夠確保可以正確還原目前的資料錄。

CommitTrans 如何影響更新

下表說明 CommitTrans 對交易的影響:

CommitTrans 如何影響更新

作業

資料來源的狀態

AddNewUpdate 以及 CommitTrans

將新資料錄加入至資料來源。

AddNew (沒有 Update) 以及 CommitTrans

遺失新資料錄。 未將資料錄加入到資料來源內。

EditUpdate 以及 CommitTrans

編輯認可的資料來源。

Edit (沒有 Update) 以及 CommitTrans

資料錄的編輯已遺失。 資料來源上的資料錄保持不變。

Delete 然後 CommitTrans

從資料來源中刪除資料錄。

Rollback 如何影響交易

下表說明 Rollback 對交易的影響:

Rollback 如何影響交易

作業

目前資料錄的狀態

您也必須

資料來源的狀態

AddNewUpdate,然後 Rollback

暫時將目前資料錄的內容儲存,騰出空間給新的資料錄。 新資料錄進入編輯緩衝區內。 呼叫 Update 後,目前的資料錄會還原至編輯緩衝區。

 

逆轉 Update 對資料來源所做的新增。

AddNew (沒有 Update),然後 Rollback

暫時將目前資料錄的內容儲存,騰出空間給新的資料錄。 編輯緩衝區包含新的資料錄。

再次呼叫 AddNew,將編輯緩衝區還原為空的新資料錄。 或呼叫 Move (0) 將舊的值還原至編輯緩衝區中。

沒有呼叫 Update,所以資料來源不會有任何變動。

EditUpdate,然後 Rollback

會暫時儲存一個未編輯過的目前資料錄版本。 對編輯緩衝區的內容做編輯。 呼叫 Update 後,仍暫時儲存未編輯過的資料錄版本。

動態集 (Dynaset):捲回目前的資料錄以返回,然後將未編輯的資料錄版本還原至編輯緩衝區。

快照集 (Snapshot):呼叫 Requery,重新整理資料來源的資料錄集。

逆轉 Update 對資料來源所進行的變更。

Edit (沒有 Update),然後 Rollback

會暫時儲存一個未編輯過的目前資料錄版本。 對編輯緩衝區的內容做編輯。

再次呼叫 Edit,將未編輯的資料錄版本還原為編輯緩衝區。

沒有呼叫 Update,所以資料來源不會有任何變動。

Delete 然後 Rollback

刪除目前資料錄的內容。

呼叫 Requery,從資料來源還原目前資料錄的內容。

逆轉對資料來源的資料所做的刪除。

請參閱

參考

CDatabase 類別

CRecordset 類別

概念

交易 (ODBC)

交易 (ODBC)

交易:在一個資料錄集內執行交易 (ODBC)