Транзакция. Влияние транзакций на обновления (ODBC)
Обновлен: Ноябрь 2007
Управление обновлениями источника данных осуществляется в процессе транзакций посредством использования буфера изменения (тот же метод применяется вне транзакций). Члены данных поля в наборе записей служат в качестве буфера изменений, содержащего текущую запись, резервную копию которой набор записей временно создает в ходе операции 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 для восстановления текущей записи из источника данных. |
Отмена удаления данных из источника данных. |
См. также
Основные понятия
Транзакции: выполнение транзакции в наборе записей (ODBC)