Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Остальные темы.doc
Скачиваний:
2
Добавлен:
19.08.2019
Размер:
538.11 Кб
Скачать

12.2. Триггеры

Триггер БД - хранимый блок PL/SQL, который связан с таблицей. Oracle автоматически исполняет триггер когда указанное предложение PL/SQL выдается по соответствующей таблице. Прежде чем может быть создан  триггер, пользователь должен выполнить скрипт  файл DBMSSTDX.SQL  его местоположение может варьироваться в зависимости от ОС.

Синтаксис Создание триггера

CREATE [ORREPLACE] TRIGGER имя триггера

BEFORE/ALTER

[{DELETE|INSERT|UPDATE}] ON имя_табл

[REFERENCING {OLD/NEW}]

FOR EACH ROW

[WHEN]

блок PL/SQL (begin √end)

Разделы тела триггера:

OR REPLASE - пересоздаёт триггер, если он уже существует;

BEFORE - указывает что ORACLE возбуждает триггер перед исполнением  предложение триггера;

ALTER - возбуждает триггер после исполнения предложение триггера;

REFERENCING - специфицирует корреляционные имена;

FOR EACH ROW- триггер строк, если нет этой строки, тогда это триггер предложений;

WHEN - ограничение триггера содержит условие SQL которое должно быть удовлетворенно, чтобы ORACLE возбудил триггер;

Триггер БД - хранимая процедура, связанная с таблицей. ORACLE автоматически возбуждает и исполняет  триггер, когда выдаётся предложение триггера, т.е.  предложение SQL которое специфицировано  или описано в  триггере.

Триггер используется для следующих целей:

- Для автоматической генерации вычисляемых значений столбцов

- Для реализации сложных проверок защиты и ограничений

- Для реализации регистраций

Триггеры - являются именованными блоками PL\SQL с разделами:

1. объявления

2. выполняемый раздел

3. раздел исключительной ситуации

В отличии от процедуры ,которую надо вызывать явным образом, триггер выполняется не явно когда происходит событие, запускающее этот триггер. Акт выполнения триггера называется его активизацией. запускается триггер операциями DML выполняемой над БД. Oracle автоматически исполняет триггер когда указанное предложение SQL выдвигается по соответственной таблице.

                Для каждой таблицы можно определить 3 типа триггеров:

1. триггеры ввода

2. триггеры добавления

3. триггеры удаления

Триггеры можно использовать для:

1. отслеживания модификаций данных

2. журнализации (регистрация событий)

3. реализация комплексных организационных правил

4. автоматическое вычисление столбцов

5. осуществление сложных процедур защиты данных и т.д.

12.2.1. Ключевые слова и параметры

 

 or replace - пересоздают триггер если от уже существует, т.е. можно изменить определение триггера без удаления и создания его заново

before - Oracle  возбуждает триггер перед исполнением предложения триггера

after - Oracle возбуждает триггер после исполнением предложения триггера

delete - Oracle  возбуждает триггер каждый раз когда  delete удаляет строку из таблицы

update - указывает что Oracleвозбуждает триггер каждый раз когда выполняется  update

of - изменяет значение в одном из столбцов указанных в фразе  of.

Если of опущено то изменяется в любом столбце таблицы.

On - определяет имя таблицы по которой создается триггер

referensinq  - определяет корреляционные имена, можно использовать корреляционные имена в блоке PL/ SQL в фразе when для того, чтобы обращаться конкретно к старому или новому значению текущей стоки.

for  each  row  - указывает, что триггер представляет собой триггер строк ,Oracle возбуждает триггер строк 1 раз для одной строки, затрагиваемой предложением триггера и удовлетворяющей необязательным ограничением триггера, которое определенно в фразе when.

When - ограничение триггера и содержит условие SQL, которое должно быть удовлетворено, что бы Oracle возбудил триггер.