Поделиться через


Транзакция. Влияние транзакций на обновления (ODBC)

Обновления источника данных управляются во время транзакций с помощью буфера редактирования (тот же метод, используемый за пределами транзакций). Элементы данных поля набора записей совместно служат буфером редактирования, который содержит текущую запись, которая резервное копирование набора записей выполняется временно во время AddNew или Edit. Во время операции текущая Delete запись не выполняется резервное копирование в рамках транзакции. Дополнительные сведения об буфере редактирования и о том, как обновления хранят текущую запись, см. в разделе Recordset: How Recordsets Update Records (ODBC).

Примечание.

Если вы реализовали массовое получение строк, вы не можете вызвать AddNewили EditDelete. Вместо этого необходимо написать собственные функции для выполнения обновлений источника данных. Дополнительные сведения о выборке массовых строк см. в разделе Recordseting Records: Получение записей в пакетной службе (ODBC).

Во время транзакцийAddNewEdit, и 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