↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

Wiki / SQL 命令

CREATE EVENT TRIGGER

定义一个新的事件触发器

英文手册覆盖始于 PostgreSQL 6.4. 来源历史与运行验证各自保留独立版本边界。

当前阅读 PG 18·选择有来源记录的版本

anchor
SQL-CREATEEVENTTRIGGER
file
sql-createeventtrigger.html
lang
en
name
CREATE EVENT TRIGGER
purpose
define a new event trigger
purpose zh
未知
sections same as
未知
slug
18
synopsis text
CREATE EVENT TRIGGER name ON event [ WHEN filter_variable IN (filter_value [, ... ]) [ AND ... ] ] EXECUTE { FUNCTION | PROCEDURE } function_name()

语法

CREATE EVENT TRIGGER name
ON event
[ WHEN filter_variable IN (filter_value [, ... ]) [ AND ... ] ]
EXECUTE { FUNCTION | PROCEDURE } function_name()
语法图

从左向右阅读;分支表示选择,旁路表示可选,循环表示重复。点击带下划线的参数可打开对应规则。

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

版本定义 PG 18

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

描述

CREATE EVENT TRIGGER创建一个新的事件触发器。每当指定的事件发生,并且与该触发器关联的WHEN条件(如果有)得到满足时,就会执行该触发器函数。有关事件触发器的一般性介绍,见第 38 章。创建事件触发器的用户将成为其所有者。

参数

name

要赋予新触发器的名称。该名称在数据库内必须唯一。

event

触发对给定函数调用的事件名称。有关事件名称的更多信息,见第 38.1 节。

filter_variable

用于过滤事件的变量名称。这样可以将触发器限定为只在原本支持的部分情形下触发。当前唯一支持的 filter_variable 是TAG。

filter_value

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

function_name

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

在CREATE EVENT TRIGGER的语法中,关键字 FUNCTION和PROCEDURE是等效的,但被引用的对象无论如何都必须是函数,而不是过程。这里使用关键字 PROCEDURE属于历史遗留做法,现已弃用。

注解

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

在单用户模式(见postgres)下,以及当event_triggers被设置为false时,事件触发器都会被禁用。如果某个错误的事件触发器使数据库严重不可用,甚至无法删除该触发器,可以在将event_triggers设置为false的情况下重启,以临时禁用事件触发器,或者以单用户模式重启,这样就可以删除它。

示例

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

兼容性

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

另见

ALTER EVENT TRIGGER, DROP EVENT TRIGGER, CREATE FUNCTION

比较版本

完整来源事实

synopsis html

CREATE EVENT TRIGGER <em class="replaceable"><code>name</code></em>
    ON <em class="replaceable"><code>event</code></em>
    [ WHEN <em class="replaceable"><code>filter_variable</code></em> IN (<em class="replaceable"><code>filter_value</code></em> [, ... ]) [ AND ... ] ]
    EXECUTE { FUNCTION | PROCEDURE } <em class="replaceable"><code>function_name</code></em>()

来源引用

完整定义与证据 JSON

定义来源

center · PostgreSQL 18 · a709ab85

正文语言: zh-Hans · 1b5ca64c