Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экзамен БД.docx
Скачиваний:
7
Добавлен:
20.04.2019
Размер:
240.87 Кб
Скачать
  1. Триггеры, их основные свойства и значение.

Триггеры так же, как процедуры и функции, являются именованными блоками PL/SQL с разделом объявлений, выполняемым разделом и разделом исключительных ситуаций. Триггер выполняется, когда происходит событие, запускающее этот триггер (операторы INSERT, UPDATE или DELETE).

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

  • Реализации сложных ограничений целостности данных, которые невозможно осуществить через описательные ограничения;

  • Сложные проверки для защиты информации

  • Слежения за информацией, хранимой в таблице, путем записи вносимых изменений и пользователей, вносящих эти изменения

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

Элементы триггера Обязательными элементами триггера являются его имя, активизирующее событие и тело. Условие WHEN необязательно.

Типы триггеров Тип триггера определяется тем, какое событие его активизирует: INSERT (ввод), UPDATE (обновление) или DELETE (удаление). Триггеры могут активизироваться до (BEFORE) или после (AFTER) операции, а также для строки (FOR EACH ROW) или оператора.

Ограничения для строчного триггера FOR EACH ROW WHEN (new.onhand < new.reorder)

Условные предикаты: INSERTING, UPDATING, DELETING

Ограничения, налагаемые на триггеры

В триггере нельзя задавать операторы управления транзакциями: COMMIT, ROLLBACK или SAVEPOINT.

Использование :old и :new в строковых триггерах Строковый триггер срабатывает один раз для каждой строки, обрабатываемой активизирующим оператором. Внутри триггера можно обращаться к строке, обрабатываемой в данный момент. Для этого служат две псевдозаписи :old (содержит значение модифицированной записи до внесения изменений) и :new (содержит значение модифицированной записи после внесения изменений). Псевдозапись :old не определена для операторов INSERT, а псевдозапись :new - для операторов DELETE.

События и компоненты процесса обработки данных, с которыми могут быть связаны триггеры:

  • Инструкции DML. Триггер запускается в ответ на вставку, удаление или обновление строки в таблице базы данных. Цель – проверка значений, устанавливаемых по умолчанию, аудит изменений, запрет определенных DML-инструкций.

  • Инструкции DDL. Триггер запускается в ответ на выполнение DDL-инструкций. Цель – аудит и запрет определенных операций.

  • События базы данных. Триггер срабатывает при запуске и останове базы данных, подключении и отключении сервера, возникновении ошибок Oracle.

  • Триггеры INSTEAD OF. Запускаются непосредственно перед операциями вставки, удаления или обновления. Управляют операциями над представлениями. Позволяют преобразовывать необновляемые представления в обновляемые.

  • Приостановленные инструкции. Триггер запускается при условии возникновения некоторой проблемы (исчерпана квота, недостаточно табличного пространства).

Создание триггера DML

CREATE [OR REPLACE] TRIGGER имя

{BEFORE | AFTER | INSERT | DELETE | UPDATE | UPDATE OF список_столбцов } ON имя_таблицы

[FOR EACH ROW]

[WHEN (…)]

[DECLARE]

BEGIN

… исполняемые операторы

[EXCEPTION]

END имя_триггера;

Создание триггера DDL

CREATE [OR REPLACE] TRIGGER имя

{BEFORE | AFTER} {событие_DDL} ON {DATABASE | SCHEMA}

DECLARE

BEGIN

END имя_триггера;