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


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

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

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

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

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

  • Атомарность Транзакция — это атомарная единица работы и выполняется ровно один раз. Все это выполняется или нет.

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

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

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

Вы можете поддерживать транзакции в OLE DB (см . раздел "Поддержка транзакций в OLE DB") или ODBC (см. транзакцию (ODBC)).

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

См. также

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