CREATE EVENT TRIGGER name ON event [ WHEN filter_variable IN (filter_value [, ... ]) [ AND ... ] ] EXECUTE PROCEDURE function_name()
CREATE EVENT TRIGGER创建一个新的事件触发器.无论何时指定的事件发生或WHEN的条件满足触发器,触发器函数将被执行.对于事件触发器的一般说明,请见于Chapter 37. 创建事件触发器的用户将变为它的拥有者.
一个新的触发器的名字.这个名字必须在数据库内是唯一的.
触发调用一个给定函数的事件名子.关于事件名字的更多信息见于 Section 37.1.
过滤事件的变量名称.这将限制它所支持的事件的一个子集去触发该触发器.现在仅支持filter_variable值为TAG.
可以触发该触发器的 filter_variable相关的值.对于TAG,这意味着一个tags的命令列表.(例如.'DROP FUNCTION').
一个用户声明的不带参数的函数并且返回 event_trigger类型.
禁止执行任何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 PROCEDURE abort_any_command();