9.1. Модели транзакций

 

Рассмотрим две модели транзакций, используемые в большинстве коммерческих СУБД: модель автоматического выполнения транзакций и модель управляемого выполнения транзакций, обе основанные на инструкциях языка SQLCOMMIT и ROLLBACK.


Автоматическое выполнение транзакций

 

В стандарте ANSI/ISO зафиксировано, что транзакция автоматически начинается с выполнения пользователем или программой первой инструкции SQL. Далее происходит последовательное выполнение инструкций до тех пор, пока транзакция не завершается одним из двух способов (рис. 9.2):

·                  инструкцией COMMIT, которая выполняет завершение транзакции: изменения, внесенные в БД, становятся постоянными, а новая транзакция начинается сразу после инструкции COMMIT;

·                  инструкцией ROLLBACK, которая отменяет выполнение текущей транзакции и возвращает БД к состоянию начала транзакции, новая транзакция начинается сразу после инструкции ROLLBACK.

 

Такая модель создана на основе модели, принятой в СУБД DB2.


Управляемое выполнение транзакций

 

Отличная от модели ANSI/ISO модель транзакций используется в СУБД Sybase, где применяется диалект Transact-SQL, в котором для обработки транзакций служат четыре инструкции (см. рис. 9.3):

·                  инструкция BEGINTRANSACTION сообщает о начале транзакции, т.е. начало транзакции задается явно;

·                  инструкция COMMITTRANSACTION сообщает об успешном выполнении транзакции, но при этом новая транзакция не начинается автоматически;

·                  инструкция SAVETRANSACTION позволяет создать внутри транзакции точку сохранения и присвоить сохраненному состоянию имя точки сохранения, указанное в инструкции;

·                  инструкция ROLLBACK отменяет выполнение текущей транзакции и возвращает БД к состоянию, где была выполнена инструкция SAVETRANSACTION (если в инструкции указана точка сохранения – ROLLBACK ТО имя_точки_сохранения) или к состоянию начала транзакции.

 

 

К оглавлению

Назад к разделу "Глава 9. Транзакции и целостность БД"

Вперед к разделу "9.2. Журнал транзакций"