问题报告 纠错本页面

CREATE EVENT TRIGGER

名称

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

大纲

CREATE EVENT TRIGGER name
  ON event
  [ WHEN filter_variable IN (filter_value [, ... ]) [ AND ... ] ]
  EXECUTE PROCEDURE function_name()

描述

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

参数

name

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

event

触发调用一个给定函数的事件名子.关于事件名字的更多信息见于 第 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