Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Вложенные транзакции

Вложенные транзакцииИменование транзакций особенно важно при вложении их друг в друга. Эта концепция не реализована в Oracle и DB2, в которых определены исключительно автономные транзакции. В Microsoft SQL Server 2008 транзакции можно вкладывать друг в друга (потенциально до бесконечности), при этом каждая “дочерняя” транзакция осведомлена о существовании “родительской”. Вкладывать можно только явные транзакции.

Автономные транзакции (Oracle и DB2) не используют блокировки и ресурсы

У совместно с главной транзакцией (из которой были инициированы). Инструкции

Commit и rollback, выполненные в главной транзакции, не оказывают влияния на автономные транзакции. В Microsoft SQL Server в любое время можно проверить количество ожидающих транзакций с помощью функции @@trancount. Вложенные транзакции в Microsoft SQL Server 2008 используются исключительно для наглядности кода. При подтверждении внутренней транзакции на самом деле ничего в базе данных не фиксируется — все изменения фактически подтверждает только внешняя инструкция commit, все остальные только уменьшают значение счетчика транзакций. Далее приведен пример, иллюстрирующий эту концепцию.

В данном случае для вставки в таблицу трех строк были инициированы три транзакции. Только последняя инструкция COMMIT фактически фиксирует изменения в таблице. Когда изменения, внесенные в базу данных в транзакции, должны быть отменены, следует выполнить инструкцию ROLLBACK. Эту инструкцию можно вставить в любое место транзакции до последней инструкции COMMIT. Откат будет выполнен до состояния на момент начала транзакции.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *