Удалить существующий триггер позволяет оператор
Удаление хранимых процедур
Для удаления процедур используется оператор
DROP PROCEDURE [IF EXISTS] имя_процедуры ;
Если удаляемой процедуры с таким именем не существует, оператор возвращает ошибку, которую можно подавить, если использовать необязательное ключевое слово if exists.
Триггеры
Триггер – это хранимая процедура, привязанная к событию изменения содержимого конкретной таблицы.
Возможны три события, связанных с изменением содержимого таблицы, к которым можно привязать триггер:
· insert – вставка новых данных в таблицу;
· delete – удаление данных из таблицы;
· Update – обновление данных в таблице.
Создание триггеров
Создать новый триггер позволяет оператор:
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt ;
Оператор создает триггер с именем trigger_name, привязанный к таблице tbl_name. Не допускается привязка триггера к временной таблице или представлению. Конструкция trigger_time указывает момент выполнения триггера и может принимать два значения:
· before – действия триггера производятся до выполнения операции изменения таблицы;
· after – действия триггера производятся после выполнения операции изменения таблицы.
Конструкция trigger_event показывает, на какое событие должен реагировать триггер, и может принимать три значения:
· insert – триггер привязан к событию вставки новой записи в таблицу;
· update – триггер привязан к событию обновления записи таблицы;
· delete – триггер привязан к событию удаления записей таблицы.
Для таблицы tbl_name может быть создан только один триггер для каждого из событий trigger_event и момента trigger_time. Таким образом, для каждой из таблиц может быть создано всего шесть триггеров.
Конструкция trigger_stmt представляет тело триггера – оператор, который необходимо выполнить при возникновении события trigger_event в таблице tbl_name.
Если требуется выполнить несколько операторов, то необходимо использовать составной оператор begin ... end. Синтаксис и допустимые операторы такие же, как и у хранимых процедур. Внутри составного оператора begin ... end допускаются все специфичные для хранимых процедур операторы и конструкции:
· другие составные операторы begin ... end;
· операторы управления потоком (if, case, while, loop, repeat, leave, iterate);
Триггеры сложно использовать, не имея доступа к новым записям, которые вставляются в таблицу, или старым записям, которые обновляются или удаляются. Для доступа к новым и старым записям используются префиксы new и old соответственно. Если в таблице обновляется поле total, то получить доступ к старому значению можно по имени old.total, а к новому – new.total.
Удалить существующий триггер позволяет оператор
DROP TRIGGER trigger_name;