DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Системные триггеры и транзакции

В зависимости от активизирующего события транзакционное поведение системного триггера меняется. Системный триггер срабатывает или как отдельная транзакция, завершающаяся после успешного выполнения триггера, или как часть текущей транзакции пользователя. Триггеры
STARTUP, SHUTDOWN,        и LOGON активизируются как
отдельные транзакции, а триггеры LOGOFF и DDL — как часть текущей транзакции.
Важно отметить, что работа, выполняемая триггером, как правило, за­вершается оператором COMMIT. В случае с триггером DDL текущая транзакция (а именно оператор CREATE, ALTER или DROP) завершается автоматически, что завершает и действие триггера. Результаты работы триггера LOGOFF также фиксируются в заключительной транзакции сеанса.

Внимание
Системные триггеры практически всегда завершаются оператором COMMIT, поэтому объявление их автономными не будет иметь никакого эффекта.
Системные триггеры и предложение WHEN
В системных триггерах, как и в триггерах DML, для указания условия акти­визации можно применять конструкцию WHEN (когда). Однако существу­ет ряд ограничений на виды условий, указываемых в системных триггерах:
       В триггерах STARTUP и SHUTDOWN никаких условий ставить нельзя. Тест ERRNO в триггерах SERVERERROR можно использовать для
выявления только конкретной ошибки.
В триггерах LOGON и LOGOFF можно проверять идентификатор и имя пользователя с помощью тестов        и USERNAME.
В триггерах DDL можно проверять тип и имя модифицируемого объекта, а также идентификатор и имя пользователя.
Другие аспекты использования триггеров
В этом разделе обсуждаются такие вопросы, как пространство имен тригге­ров, ограничения на применение триггеров, различные типы тел триггеров и привилегии, имеющие отношение к триггерам.
 









jAntivirus