русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Триггеры баз данных


Дата добавления: 2013-12-24; просмотров: 1307; Нарушение авторских прав


Триггер базы данных – это хранимая процедура, которую можно связать с некоторой таблицей. Когда приложение выполняет SQL – оператор DML над таблицей, удовлетворяющей условиям, указанным в триггере, ORACLE автоматически активизирует или выполняет триггер. Таким образом, триггеры можно использовать для настройки реакции ORACLE Server на различные события приложения. Вне зависимости от типа триггера все триггеры создаются одинаково. Общий синтаксис создания, таков:

 

сreate [or replace] trigger имя_триггера

{before | after | instead of} активизирующее_событие

on имя_таблицы

[for each row]

тело_триггера

 

Здесь активизирующее_событие, указывает событие активации триггера (далее указывается конкретная таблица или представление).

Например, следующий триггер автоматически регистрирует изменения, вносимые в таблицу PARTS.

 

create or replace trigger parts_log

after insert or update or delete on parts

declare

stmt_type char(1);

begin

if inserting then

stmt_type:=’I’;

elsif updating then

stmt_type:=’U’;

else

stmt_type:=’D’;

end if;

insert into part_change_log

values(stmt_type, USER);

end parts_log;

 

Как видно из вышеприведенного примера, описание триггера содержит однозначно определяемые части:

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

• триггер может быть активизирован до (before) или после (after) выполнения оператора триггера в зависимости от логики конкретного приложения.

Помимо этого в описании триггера, указывается должен ли триггер активизироваться один раз, независимо от того, на какое количество строк оказывает воздействие оператор триггера (такие триггеры носят название операторных), или для каждой изменяемой строки (такие триггеры называются строчными). Приведенный выше триггер это операторный триггер. В следующем примере триггер PARTS_LOG является строчным (FOR EACH ROW):



 

create or replace trigger parts_log

before insert or update or delete on parts

for each row

declare

stmt_type char(1);

begin

if inserting then

stmt_type:=’I’;

elsif updating then

stmt_type:=’U’;

else

stmt_type:=’D’;

end if;

insert into part_change_log

values (:new.id, :old.id, :new.unit_price, :old.unit_price, :new.description,:old. description, stmt_type, USER, TO_CHAR (SYSDATE, ’DD-MON-YYYY’));

end parts_log;

 

Из рассмотренных выше примеров видно, что в PL/SQL имеются следующие уникальные языковые конструкции для триггеров баз данных:

• предикаты INSERTING, UPDATING, DELETING могут использоваться в операторах условного перехода в теле триггера.

• значения корреляции позволяют с помощью строковых триггеров обращаться к новым и старым значениям полей текущей строки. Когда оператором триггера является INSERT, все старые значения полей являются NULL –значениями. Аналогично, когда оператором триггера является DELETE, все новые значения являются соответственно NULL – значениями.

В связи с триггерами необходимо отметить, что, начиная с восьмой версии ORACLE, появляются так называемые INSTEAD OF триггеры, посредством которых становится возможным выполнять операции обновления над “необновляемыми представлениями”. В предыдущих версиях ORACLE обновляемыми были лишь те представления, которые соответствовали основному правилу обновления представлений. В 8-й версии ORACLE любое представление, для которого создан корректный триггер INSTEAD OF– обновляемое. Детальное описание триггеров instead of приведено в [3].



<== предыдущая лекция | следующая лекция ==>
ИСПОЛЬЗОВАНИЕ ОБЪЕКТОВ МОДУЛЯ | Модуль DBMS_OUTPUT


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.506 сек.