CREATE EVENT TRIGGER
Эта страница переведена при помощи нейросети GigaChat.
CREATE EVENT TRIGGER — создание нового триггера события.
Синтаксис
CREATE EVENT TRIGGER name
ON event
[ WHEN filter_variable IN (filter_value [, ... ]) [ AND ... ] ]
EXECUTE { FUNCTION | PROCEDURE } function_name()
Описание
Команда CREATE EVENT TRIGGER используется для создания нового триггера события. Такой триггер вызывает указанную функцию всякий раз, когда происходит определенное событие, и, при наличии условия WHEN, если оно выполняется. Более подробное описание триггеров событий приведено в разделе «Триггеры событий». Создатель триггера становится его владельцем.
Параметры
name- Имя триггера (уникальное в пределах всей базы данных), который должен быть создан.
event- Событие, при наступлении которого будет выполняться функция триггера. Подробнее описано в разделе «Обзор поведения триггеров событий».
filter_variable- Имя переменной, по которой можно отфильтровать ситуации срабатывания триггера. Сейчас поддерживается только переменная
TAG.
filter_value- Список значений переменной фильтрации, при которых должен выполняться триггер. Например, для
TAGэто могут быть такие строки, какDROP FUNCTION.
function_name- Пользовательская функция, не принимающая аргументов и возвращающая тип
event_trigger.ПримечаниеОбратите внимание: в синтаксисе
CREATE EVENT TRIGGERключевые словаFUNCTIONиPROCEDUREсчитаются равнозначными, но фактически необходимо указывать функцию.PROCEDUREподдерживается по историческим причинам и считается устаревшим.
Примечания
Создавать триггеры событий разрешено только суперпользователям.
Событийные триггеры отключаются в однопользовательском режиме, а также при установке параметра event_triggers в значение false. Если ошибочный событийный триггер настолько сильно блокирует базу данных, что даже не получается удалить этот триггер, перезапустите сервер с параметром event_triggers, установленным в false, чтобы временно отключить событийные триггеры, либо в однопользовательском режиме, тогда получится выполнить эту операцию.
Примеры
Запрет выполнения любой команды DDL:
CREATE OR REPLACE FUNCTION abort_any_command()
RETURNS event_trigger
LANGUAGE plpgsql
AS $$
BEGIN
RAISE EXCEPTION 'command % is disabled', tg_tag;
END;
$$;
CREATE EVENT TRIGGER abort_ddl ON ddl_command_start
EXECUTE FUNCTION abort_any_command();
Совместимость
В стандарте SQL нет команды CREATE EVENT TRIGGER.