Как было показано выше, триггеры DML и триггеры замещения срабатывают на события DML (или вместо них), а именно на операторы INSERT, UPDATE и DELETE. Системные же триггеры активизируются событиями двух видов: DDL и базы данных. К событиям DDL относятся операторы CREATE, ALTER и DROP, а к событиям базы данных — запуск/останов сервера, регистрация/отключение пользователя и ошибка сервера.
В таблице 11.4 описаны события DDL и базы данных вместе с указанием допустимого момента их обработки (BEFORE или AFTER). Системные триггеры замещения создавать нельзя. Для оператора TRUNCATE не предусмотрено событие базы данных.

Внимание
Для создания системного триггера необходимо иметь системную привилегию ADMINISTER DATABASE TRIGGER (см. ниже раздел "Привилегии на триггеры").
Триггеры базы данных и триггеры схемы
Системный триггер можно определить на уровне базы данных или на уровне схемы. Триггер базы данных срабатывает каждый раз при наступлении активизирующего события, а триггер схемы — только когда активизирующее событие происходит в указанной схеме. Уровень системного триггера определяют ключевые слова DATABASE и SCHEMA. Если с ключевым словом SCHEMA не указана схема, то по умолчанию используется та, которой принадлежит триггер. Предположим, что пользователь UserA
создает следующий триггер:

Внимание
Перед выполнением этих примеров нужно создать пользователей UserA и UserB и предоставить им соответствующие полномочия (см. файл DatabaseScliema. sql),

Как и предполагалось, LogAllConnects активизировался три раза (по разу для каждого из трех соединений), a LogUserAConnects и LogUserBConnects -только по разу.
Внимание
Триггеры STARTUP и SHUTDOWN имеют смысл только на уровне базы данных. Не запрещается создавать их и на уровне схемы, но активизироваться они при этом не будут.
| < Предыдущая | Следующая > |
|---|


