Транзакция. Влияние транзакций на обновления (ODBC)
Обновления источника данных управляются во время транзакций с помощью буфера редактирования (тот же метод, используемый за пределами транзакций). Элементы данных поля набора записей совместно служат буфером редактирования, который содержит текущую запись, которая резервное копирование набора записей выполняется временно во время AddNew
или Edit
. Во время операции текущая Delete
запись не выполняется резервное копирование в рамках транзакции. Дополнительные сведения об буфере редактирования и о том, как обновления хранят текущую запись, см. в разделе Recordset: How Recordsets Update Records (ODBC).
Примечание.
Если вы реализовали массовое получение строк, вы не можете вызвать AddNew
или Edit
Delete
. Вместо этого необходимо написать собственные функции для выполнения обновлений источника данных. Дополнительные сведения о выборке массовых строк см. в разделе Recordseting Records: Получение записей в пакетной службе (ODBC).
Во время транзакцийAddNew
Edit
, и Delete
операций можно зафиксировать или откатить. Последствия CommitTrans
и Rollback
могут привести к тому, что текущая запись не будет восстановлена в буфер редактирования. Чтобы убедиться, что текущая запись правильно восстановлена, важно понять, как CommitTrans
функции и Rollback
члены работают с функциями CDatabase
CRecordset
обновления.
Как 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 вызова неуправляемая версия записи по-прежнему временно хранится. |
Dynaset: прокрутите текущую запись, а затем снова, чтобы восстановить неотредактированную версию записи в буфер редактирования. Моментальный снимок: вызов Requery обновления набора записей из источника данных. |
Изменения в источнике данных, внесенные путем Update обратного изменения. |
Edit (без Update ), затем Rollback |
Неуправляемая версия текущей записи сохраняется временно. Изменения вносятся в содержимое буфера редактирования. | Снова вызовите Edit , чтобы восстановить неуправляемую версию записи в буфер редактирования. |
Так как Update не было вызвано, изменения в источнике данных не были внесены. |
Delete тогда Rollback |
Содержимое текущей записи удаляется. | Вызов Requery для восстановления содержимого текущей записи из источника данных. |
Удаление данных из источника данных обратно. |
См. также
Транзакция (ODBC)
Транзакция. Выполнение транзакции в наборе записей (ODBC)
Класс CDatabase
Класс CRecordset