Средства обработки транзакций

Транзакция начинается каждый всякий раз, когда происходит сеанс работы с SQL. Все команды, которые вводятся будут частью этой транзакции, пока она не завершится вводом команды COOMMIT WORK или команды ROLLBACK WORK. COMMIT делает все изменения, произведенные транзакцией, постоянными, а ROLLBACK может их отменить. Новая транзакция начинается после каждой команды COMMIT или ROLLBACK. Синтаксис данных команд:

Чтобы оставить все изменения постоянными используют команду

COMMIT WORK;

Чтобы отменить изменения используют команду

ROLLBACK WORK;

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

SET AUTOCOMMIT ON;

Отмена автоматического режима

SET AUTOCOMMIT OFF;

При режиме AUTOCOMMIT каждая команда становится отдельной транзакцией.

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

§ Команда COMMIT завершает выполнение ткущей транзакции, причем изменения, внесенные в БД, становятся постоянными. Новая транзакция начинается непосредственно после COMMIT;

§ Команда ROLLBACK отменяет выполнение текущейтранзакции, сделанные изменения отменяются, а новая транзакция начинается непосредственно после ROLLBACK;

§ Успешное завершение программы обработки данных считается успешным окончанием транзакции, как если бы была выполнена команда COMMIT. Новая транзакция не начинается, т.к. программа закончилась;

§ Неуспешное завершение программы считается неуспешным окончанием транзакции, как ели бы была выполнена команда ROLLBACK. Новая транзакция не начинается, поскольку программа закончилась.

В СУБД SQL Server используется несколько расширенная модель транзакций, представляющая пользователям дополнительные возможности. При этом используются команды:

§ BEGIN TRANSACTION – сообщает системе о начале транзакции. В отличие от стандартной модели, начало транзакции задается явно с помощью этой команды.

§ COMMIT TRANSACTION – сообщает системе об успешном окончании транзакции. После выполнения этой команды все изменения, сделанные в БД в течении транзакции, становятся постоянными. Однако новая транзакция не начинается;

§ SAVE TRANSACTION – создает внутри транзакции точку сохранения. СУБД сохраняет состояние БД в текущей точке и присваивает сохраненному состоянию имя точки сохранения, которое указывается в операторе;

§ ROLLBACK TO SAVEPOINT – отменяет изменения, сделанные в БД после точки сохранения, возвращая транзакцию к месту, где был выполнен оператор SAVE TRANSACTION;

§ ROLLBACK – отменяет все изменения, созданные в БД после оператора BEGIN TRANSACTION.

Все транзакции сохраняются в журнале транзакций, при необходимости системный администратор имеет возможность восстановить данные по этому журналу. Недостатком использования журнала транзакции является увеличение продолжительности выполнения изменений в БД.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: