- •12.1. Специальные аспекты работы с бд. Процедура индексирования.
- •12.2. Триггеры
- •12.2.1. Ключевые слова и параметры
- •12.2.2. Компоненты триггера
- •12.2.3.Типы триггеров.
- •12.2.4.Включение и выключение триггеров.
- •C.12.2.5. Удаление триггера
- •C.12.2.6. Корреляционные имена
- •12.3. Процедуры и функции
- •12.4. Функция
- •12.5.Курсоры.
- •14.1. Системы обработки транзакций oltp и olap - технологий
- •14.2. Хранилища данных. Многомерные хранилища данных
- •14.3. Методы аналитической обработки (olap)
- •14.3.1. Хранилища данных
- •14.3.2. Причины внедрения информационных систем на основе хранилищ данных
- •Литература
- •14.5. Olap в России
- •Тема 15. Основы фракталов. Фрактальная математика. Фрактальные методы в архивации. Управления складами данных
- •15.1. Понятие "фрактал"
- •15.2. Классификация фракталов
- •15.2.1. Геометрические фракталы
- •15.2.2. Алгебраические фракталы
- •C.15.2.3. Стохастические фракталы
- •C.15.3. Системы итерируемых функций
- •15.4. Фрактальное сжатие
- •15.5. История фрактального сжатия
- •15.6. Идея фрактальной архивации
- •15.7. Сравнение с jpeg
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 возбудил триггер.