CREATE EVENT TRIGGER

PostgreSQL 9.4.4 中文手册
上一页 | 上一级 |  | 下一页

# 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

上一页 | 起始页 | 下一页
CREATE DOMAIN | 上一级 | CREATE EXTENSION