选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3
历史版本PostgreSQL 9.5 已于 2021 年 2 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

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_variableTAG

filter_value

与相关filter_variable 关联的一组值;当其取值属于该列表时,触发器就会被触发。对于 TAG,这表示一组命令标签(例如 'DROP FUNCTION')。

function_name

由用户提供的函数,声明为不接受参数并返回类型 event_trigger

注解

只有超级用户能创建事件触发器。

事件触发器在单用户模式下被禁用(参见 postgres)。如果错误的事件触发器导致数据库严重失效,以至于无法删除触发器,可以重启到单用户模式,然后就能执行删除操作。

示例

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

兼容性

在 SQL 标准中没有 CREATE EVENT TRIGGER语句。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。