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


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

Управление обновлениями источника данных осуществляется в процессе транзакций посредством использования буфера изменения (тот же метод применяется вне транзакций). Члены данных поля в наборе записей служат в качестве буфера изменений, содержащего текущую запись, резервную копию которой набор записей временно создает в ходе операции AddNew или Edit. В ходе операции Delete резервная копия текущей записи не создается. Подробные сведения о буфере изменений и о том, как обновления сохраняют текущую запись, см. в разделе Набор записей. Обновление записей наборами записей (ODBC).

Примечание

Если реализована массовая выборка строк, вызвать операторы AddNew, Edit или Delete невозможно.Вместо этого можно написать собственные функции для выполнения обновлений источника данных.Дополнительные сведения о групповой выборке строк см. в разделе Набор записей. Групповая выборка строк (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 на транзакции

В представленной ниже таблице поясняется влияние функции Rollback на транзакции.

Влияние функции Rollback на транзакции

Операция

Состояние текущей записи

Дополнительные действия, которые требуется выполнить

Состояние источника данных

AddNew и Update, а затем Rollback

Содержимое текущей записи временно сохраняется для освобождения места для новой записи. Новая запись вводится в буфер изменений. После вызова Update текущая запись восстанавливается в буфере изменений.

 

Добавление данных к источнику данных, выполненное с помощью функции Update, отменяется.

AddNew (без Update), а затем Rollback

Содержимое текущей записи временно сохраняется для освобождения места для новой записи. Буфер изменений содержит новую запись.

Вызовите операцию AddNew снова для восстановления в буфере изменений в состоянии пустой новой записи. Или же вызовите операцию Move(0) для восстановления прежних значений буфера изменений.

Поскольку операция Update не была вызвана, в источник данных изменения не вносились.

Edit и Update, а затем Rollback

Временно сохраняется неизмененная версия текущей записи. Изменения вносятся в содержимое буфера изменений. После вызова операции Update неизмененная версия записи остается в расположении временного хранения.

Dynaset: прокрутка текущей записи и восстановление неизмененной версии записи в буфере изменений.

Snapshot: вызов операции Requery для обновления набора записей из источника данных.

Изменение данных в источнике данных, выполненное с помощью Update, отменяется.

Edit (без Update), а затем Rollback

Временно сохраняется неизмененная версия текущей записи. Изменения вносятся в содержимое буфера изменений.

Вызовите Edit снова для восстановления неизмененной версии записи в буфере изменений.

Поскольку операция Update не была вызвана, в источник данных изменения не вносились.

Delete, а затем Rollback

Удаление содержимого текущей записи.

Вызовите Requery для восстановления текущей записи из источника данных.

Отмена удаления данных из источника данных.

См. также

Ссылки

Класс CDatabase

Класс CRecordset

Основные понятия

Транзакция (ODBC)

Транзакция (ODBC)

Транзакции: выполнение транзакции в наборе записей (ODBC)