Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Вложенными называются транзакции, выполнение которых инициируется из тела уже активной транзакции.
Для создания вложенной транзакции пользователю не нужны какие-либо дополнительные команды. Он просто начинает новую транзакцию, не закрыв предыдущую. Завершение транзакции верхнего уровня откладывается до завершения вложенных транзакций.
Если транзакция самого нижнего вложенного уровня завершена неудачно и отменена, то все транзакции верхнего уровня, включая транзакцию первого уровня, будут отменены.
Кроме того, если несколько транзакций нижнего уровня были завершены успешно (но не зафиксированы), однако на среднем уровне (не самая верхняя транзакция) неудачно завершилась другая транзакция, то в соответствии с требованиями ACID произойдет откат всех транзакций всех уровней, включая успешно завершенные.
Только когда все транзакции на всех уровнях завершены успешно, происходит фиксация всех сделанных изменений.
Каждая команда COMMIT TRANSACTION работает только с последней начатой транзакцией. Даже если в команде COMMIT TRANSACTION указано имя транзакции более высокого уровня, будет завершена транзакция, начатая последней.
Если где-либо на любом уровне вложенности используется команда ROLLBACK TRAN[SACTION] (без указания имени транзакции), то откатываются все транзакции, включая транзакцию самого верхнего уровня.
Более того, в команде ROLLBACK TRANSACTION разрешается указывать только имя самой верхней транзакции. Имена любых вложенных транзакций игнорируются, и попытка их указания приведет к ошибке.
Итак, при откате транзакции любого уровня вложенности всегда происходит откат всех транзакций.
Если же требуется откатить лишь часть транзакций, можно использовать команду SAVE TRANSACTION, с помощью которой создается точка сохранения.
Пример 2. Использование вложенных транзакций
Дата публикования: 2014-12-08; Прочитано: 320 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!