SQL оператор create trigger создает новый триггер, который сохраняется на сервере. Оператор create trigger состоит из заголовка, который задает характеристики триггера, и тела, которое содержит описание тех действий, которые надо выполнить при срабатывании триггера.
Формат:
create trigger Имя_триггера on Имя_таблицы { after | before } { insert | update | delete } [ position Позиция ] [ user { current | default } ] [ for each { row | statement } ] as [ Определение_локальных_переменных... ] begin {Тело_триггера;} end;
Задает имя триггера. Имя триггера должно содержать буквы и цифры, должно начинаться с буквы и должно быть не длиннее 31 символа. Имена триггеров должны быть уникальными и не должны совпадать с зарезервированными словами.
Тело триггера
Тело триггера описывает те действия, которые необходимо выполнить при вызове триггера.
user current
Необязательный параметр, который задает права, которые будут использоваться внутри триггера. Если задана конструкция user current, то внутри триггера действуют права пользователя, который создал триггер.
user default
Необязательный параметр, который задает права, которые будут использоваться внутри триггера. Если задана конструкция user default, то внутри триггера будут действовать права, действовавшие до вызова триггера.
after
Обязательный параметр, который задает момент срабатывания триггера. Если задана конструкция after, то триггер срабатывает после выполнения операции.
before
Обязательный параметр, который задает момент срабатывания триггера. Если задана конструкция before, то триггер срабатывает до выполнения операции и может ее отменить.
for each row
Необязательный параметр, который определяет момент срабатывания триггера. Если задана конструкция for each row, то триггер срабатывает для каждой обрабатываемой записи.
for each statement
Необязательный параметр, который определяет момент срабатывания триггера. Если задана конструкция for each statement, то триггер срабатывает один раз.
position число
Необязательный параметр, который определяет порядок срабатывания триггеров. Число должно быть в диапазоне от 0 до 32767. Чем меньше позиция триггера, тем раньше он сработает. Триггеры с одинаковой позицией срабатывают в произвольном порядке. Если позиция триггера не задана, то у него будет позиция 0.
Определение_локальных_переменных
См. подробнее в разделе «Переменные».
Пример:
Создать триггер tadBOOK, который будет протоколировать удаляемые из таблицы BOOK записи.
create trigger tadBOOK on BOOK after delete for each row as begin insert into table LOG (DATE , USER , RID) values (today (), session_user, BOOK.ID) ; end;