Транзакции (доступ к данным MFC)
Концепция транзакции была разработана для обработки случаев, в которых результирующее состояние базы данных зависит от общей успешности выполнения ряда операций. Это может происходить потому, что последующие операции могут изменять результаты предыдущих операций. В таких случаях, если какая либо операция завершается ошибкой, результирующее состояние может быть неопределенным.
Чтобы решить эту проблему, в транзакциях группируются серии операций таким образом, что гарантируется целостность конечного результата. Все операции должны завершиться успешно и затем быть подтверждены (записаны в базу данных), либо вся транзакция завершается ошибкой. Отмена транзакции называется откатом. Откат позволяет отказаться от изменений и вернуть базу данных в предыдущее состояние.
Например, в автоматизированной банковской транзакции, при переводе денег со счета A на счет B, как снятие с А, так и зачисление на B должны успешно завершиться, чтобы корректно обработать денежные средства, или вся транзакция должна закончиться откатом.
Транзакция должна иметь набор свойств ACID, что означает следующее:
Атомарность - транзакция является единицей работы и выполняется только один раз; или вся работа делается, либо ничего.
Согласованность - транзакция сохраняет целостность данных, преобразуя одно согласованное состояние данных в другое согласованное состояние данных. Данные в транзакции должны иметь семантическую сохранность.
Изоляция - транзакция является изолированной единицей и каждая возникает отдельно и независимо от параллельных транзакций. Транзакция никогда не должна включать промежуточные стадии другой транзакции.
Стойкость - транзакция является единицей восстановления. Если транзакция выполнена успешно, ее изменения сохраняются даже в том случае, если система зависает или завершает работы. Если транзакция дает сбой, система остается в предыдущем состоянии, которое было до подтверждения транзакции.
Можно выполнять поддержку транзакций в OLE DB (см. поддержка транзакций в OLE DB) или ODBC (см. транзакции (ODBC)).
Распределенная транзакция предназначена для обновления распределенных данных, т.е., данных на нескольких компьютерах в сети. Если вы хотите выполнить поддержку транзакций в распределенной системе, следует использовать платформу Microsoft .NET Framework, а не поддержку транзакций OLE DB.