Как правило, изменения в базе данных обусловлены реальными событиями, такими, например, как увольнение сотрудника. При этом подобное событие приводит не к одному, а к нескольким изменениям в базе данных, реляционная схема которой приведена в приложении:
- закрепление всех объектов, увольняемого сотрудника за другими сотрудниками отделения;
- удаление записи сотрудника из базы данных.
Чтобы в базе данных не возникли противоречия, указанные изменения следует выполнить как одно целое. Если из-за системного сбоя или другой ошибки получится, что одна часть изменений была внесена, а другая – нет, то это нарушит целостность хранимых данных. При последующих вычислениях результаты окажутся неверными. Поэтому несколько изменений базы данных, которые вызваны одним событием, необходимо вносить по принципу “либо все, либо ничего”. Это обеспечивается средствами обработки транзакций.
Транзакцией называют несколько последовательных инструкций SQL, которые рассматриваются как единое целое. Инструкции, входящие в транзакцию, выполняют взаимосвязанные действия. Каждая инструкция решает часть общей задачи, но для того, чтобы задачу можно было считать решенной, требуется выполнить все эти инструкции.
Понятие транзакции является очень важным для программ, изменяющих содержимое базы данных, так как позволяет обеспечить ее целостность. Транзакции в реляционной СУБД подчиняются следующему правилу:
“Инструкции, входящие в транзакцию, рассматриваются как неделимое целое. Либо все инструкции будут выполнены успешно, либо ни одна из них не должна быть выполнена”.
Как следует из рисунка 22, СУБД должна подчиняться этому правилу, даже если во время выполнения транзакции произойдет ошибка в программе или аппаратный сбой. В любом случае СУБД должна гарантировать, что при восстановлении базы данных после сбоя “частичное выполнение транзакции” в ней отражено не будет.

Рисунок 22 Понятие транзакции