Транзакция (англ. transaction) – группа последовательных операций одного пользователя, которая представляет собой логическую единицу работы с данными. Транзакция может быть выполнена либо целиком и успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще, и тогда она не должна внести какие-либо изменения в данные.
Транзакции используются для обеспечения логической непротиворечивости данных в процессе модификации несколькими пользователями одновременно.
Во многих приложениях существует ряд операций с данными, которые надо выполнить по принципу «все или ничего». Например, перенос денег со счета на счет. Эта операция требует выполнить несколько действий:
· Вычесть некоторую сумму с одного счета;
· Прибавить эту же сумму на другой счет;
· Занести некоторую запись в протокол.
Если хотя бы одно из этих действий не выполнится, надо аннулировать все изменения, внесенные предыдущими действиями (откатить транзакцию). Если транзакция откачена, то это эквивалентно тому, что ни одно из действий, входящих в операцию, выполняющуюся под транзакцией, не выполнялось вовсе.
В многопользовательском режиме остальные пользователи могут обращаться к данным из модифицируемых таблиц. Они не должны видеть частичные или незавершенные изменения и механизм транзакций обеспечивает это. Т.е. при использовании механизма транзакций для «внешних» пользователей база данных (совокупность нескольких таблиц) «скачком» переходит из одного допустимого состояния в другое.