CREATE EVENT TRIGGER

Name

CREATE EVENT TRIGGER -- 定义一个事件触发器

Synopsis

CREATE EVENT TRIGGER _name_
  ON _event_
  [ WHEN _filter_variable_ IN (filter_value [, ... ]) [ AND ... ] ]
  EXECUTE PROCEDURE _function_name_()

描述

CREATE EVENT TRIGGER创建一个新的事件触发器.无论何时指定的事件发生或WHEN的条件满足触发器,触发器函数将被执行.对于事件触发器的一般说明,请见于Chapter 37. 创建事件触发器的用户将变为它的拥有者.

参数

_name_

一个新的触发器的名字.这个名字必须在数据库内是唯一的.

_event_

触发调用一个给定函数的事件名子.关于事件名字的更多信息见于 Section 37.1.

_filter_variable_

过滤事件的变量名称.这将限制它所支持的事件的一个子集去触发该触发器.现在仅支持_filter_variable_值为TAG.

_filter_value_

可以触发该触发器的 _filter_variable_相关的值.对于TAG,这意味着一个tags的命令列表.(例如.'DROP FUNCTION').

_function_name_

一个用户声明的不带参数的函数并且返回 event_trigger类型.

Notes

只有超户能创建事件触发器.

在单用户模式下事件触发器是被关闭的(详见于postgres). 如果一个错误的事件触发器关闭了数据库,在单用户模式下你将不能重启数据库,删除事件触发器.

Examples

禁止执行任何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();

Compatibility

在标准的SQL语法中没有 CREATE EVENT TRIGGER语句.

相关内容

ALTER EVENT TRIGGER, DROP EVENT TRIGGER, CREATE FUNCTION