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


Транзакции (доступ к данным MFC)

Концепция транзакции была разработана для обработки случаев, в которых результирующее состояние базы данных зависит от общей успешности выполнения ряда операций. Это может происходить потому, что последующие операции могут изменять результаты предыдущих операций. В таких случаях, если какая либо операция завершается ошибкой, результирующее состояние может быть неопределенным.

Чтобы решить эту проблему, в транзакциях группируются серии операций таким образом, что гарантируется целостность конечного результата. Все операции должны завершиться успешно и затем быть подтверждены (записаны в базу данных), либо вся транзакция завершается ошибкой. Отмена транзакции называется откатом. Откат позволяет отказаться от изменений и вернуть базу данных в предыдущее состояние.

Например, в автоматизированной банковской транзакции, при переводе денег со счета A на счет B, как снятие с А, так и зачисление на B должны успешно завершиться, чтобы корректно обработать денежные средства, или вся транзакция должна закончиться откатом.

Транзакция должна иметь набор свойств ACID, что означает следующее:

  • Атомарность - транзакция является единицей работы и выполняется только один раз; или вся работа делается, либо ничего.

  • Согласованность - транзакция сохраняет целостность данных, преобразуя одно согласованное состояние данных в другое согласованное состояние данных. Данные в транзакции должны иметь семантическую сохранность.

  • Изоляция - транзакция является изолированной единицей и каждая возникает отдельно и независимо от параллельных транзакций. Транзакция никогда не должна включать промежуточные стадии другой транзакции.

  • Стойкость - транзакция является единицей восстановления. Если транзакция выполнена успешно, ее изменения сохраняются даже в том случае, если система зависает или завершает работы. Если транзакция дает сбой, система остается в предыдущем состоянии, которое было до подтверждения транзакции.

Можно выполнять поддержку транзакций в OLE DB (см. поддержка транзакций в OLE DB) или ODBC (см. транзакции (ODBC)).

Распределенная транзакция предназначена для обновления распределенных данных, т.е., данных на нескольких компьютерах в сети. Если вы хотите выполнить поддержку транзакций в распределенной системе, следует использовать платформу Microsoft .NET Framework, а не поддержку транзакций OLE DB.

См. также

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

Программирование доступа к данным (MFC/ATL)