Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Особенности триггеров




Являясь по сути хранимой процедурой, триггер обладает теми же преимуществами и недостатками, что и весь хранимый код. К преимуществам следует добавить то, что триггеры являются прекрасным инструментом для администратора БД, поскольку работают независимо от того, какое из клиентских приложений вызвало активизирующее их событие. Эта особенность превращает триггеры также в средство добавления новой функциональности в существующую систему без всякого изменения ее программного кода. Достаточно только выбрать подходящее событие и создать триггер.

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

Событий, которые могут активизировать триггеры, довольно много, например, Oracle поддерживает триггеры уровня базы данных, уровня схемы и уровня таблицы. В рамках данного курса рассмотрим только триггеры уровня таблицы, которые обеспечивают автоматическое выполнение некоторых действий при каждой модификации данных таблицы.

Такой триггер характеризуется следующими признаками, которые должны быть заданы при его создании:

  • уникальное имя триггера (задание параметров не требуется, поскольку триггер – процедура без параметров);
  • активизирующее действие - команда, которая вызывает запуск триггера, такими командами являются INSERT, DELETE, UPDATE;
  • время активизации - выполнение триггера до (BEFORE) или после (AFTER) выполнения активизирующего действия;
  • область действия - выполнение триггера либо один раз для каждого оператора модификации таблицы, либо для каждой строки (в последнем случае следует добавить фразу FOR EACH ROW);
  • условие активизации - необязательное дополнительное условие, которое должно выполняться для запуска триггера (фраза WHEN);
  • тело триггера – действия, выполняемые триггером (блок PL/SQL).

На каждое событие может быть создано и несколько триггеров. Однотипные триггеры выполняются в порядке их создания.

Действие, выполняемое в триггере, может включать в себя операции INSERT, DELETE, UPDATE, которые, в свою очередь, могут запускать выполнение того же или других триггеров. Такое явление называется каскадированием триггера.

Команды SQL для работы с триггерами

Триггер создается при помощи команды SQL:

CREATE [OR REPLACE] TRIGGER имя_триггера

Время_активизации активизирующая_команда ON имя_таблицы

[FOR EACH ROW]

[WHEN дополнительное условие запуска триггера]

AS

Блок PL/SQL

В теле триггера можно использовать любые операторы PL/SQL, кроме операторов SQL, которые изменяют ту таблицу, для которой был создан данный триггер. Любые другие таблицы изменять можно.

В теле триггера в Oracle можно использовать две предопределенные переменные, которые обозначают ту строку, которая в данный момент подвергается модификации:

:new – новое значение строки, применяется для команд INSERT и UPDATE

:old – старое значение строки (до модификации), применяется для команд DELETE и UPDATE

Если триггер благополучно создан, далее он будет запускаться сам при любом наступлении активизирующего события. Удалить триггер можно при помощи команды

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...