- Автономные транзакции
-
Значимость предмета статьи поставлена под сомнение. Пожалуйста, покажите в статье значимость её предмета, добавив в неё доказательства значимости по частным критериям значимости или, в случае если частные критерии значимости для предмета статьи отсутствуют, по общему критерию значимости. Подробности могут быть на странице обсуждения.- Дата постановки шаблона: 9 февраля 2011
Автономные транзакции представляют собой новый метод управления транзакциями. Автономные транзакции позволяют создавать новые подтранзакции (subtransaction), которые могут сохранять или отменять изменения вне зависимости от родительской транзакции.
Содержание
Могут использоваться
- в анонимных блоках верхнего уровня;
- в локальных, отдельных или входящих в пакеты процедурах и функциях;
- в методах объектных типов;
- в триггерах базы данных.
Когда удобно использовать
- Проверка, записи которой не могут быть отменены.
- Ошибка изменяющейся таблицы (Чаще всего она возникает при попытке читать данные из таблицы, в ответ на изменение которой сработал триггер).
- Выполнение операторов ЯОД в триггерах
- Запись в базу данных
- строгая проверка; необходимо знать, какие данные видел каждый из пользователей, или надо записать идентификатор каждой записи, запрошенной у системы;
- средство создания отчетов позволяет выполнять только SQL-операторы SELECT; абсолютно необходимо по ходу построения отчета вызывать хранимую процедуру, выполняющую ряд вставок (например, заполняющую таблицу параметров для другого отчета).
- Разработка модульного кода.
Проблемы
- Невозможность использования в распределенных транзакциях.
- Автономные транзакции доступны только в среде PL/SQL.
- Откатывается вся транзакция
- Временные таблицы уровня транзакции (нельзя одновременно использовать в нескольких транзакциях в одном сеансе).
- Изменяющиеся таблицы (обязательно проверять корректность каждого триггера)
См. также
Уровни изолированности транзакций
Ссылки
Категория:- СУБД
Wikimedia Foundation. 2010.