VastbaseE100

基于开源技术的HTAP数据库管理系统。性能优异,稳定可靠,提供诸多专属领域特性。

Menu

CREATE EVENT TRIGGER

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

语法格式

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

说明

CREATE EVENT TRIGGER创建一个新的事件触发器。每当发生指定事件并且满足与触发器相关联的 WHEN条件(如果有)时,将执行触发器功能。创建事件触发器的用户将成为其所有者。

参数说明

  • name

    给新触发器的名称。在该数据库中这个名称必须唯一。

  • event

    会触发对给定函数调用的事件名称。更多事件名称的信息请见 第 40.1 节。

  • filter_variable

    用来过滤事件的变量名称。这可以用来限制触发器只为它支持的那一部分 情况引发。当前唯一支持的 filter_variable 是TAG。

  • filter_value

    与该触发器要为其引发的 filter_variable相关联 的一个值列表。对于TAG,这表示一个命令标签列表(例如 'DROP FUNCTION')。

  • function_name

    一个用户提供的函数,它被声明为没有参数并且返回类型 event_trigger。 在CREATE EVENT TRIGGER的语法中,关键字CREATE EVENT TRIGGER和PROCEDURE是等效的,但是被引用的函数在任何情况下都必须是函数,而不是过程。 此处关键字PROCEDURE的使用是历史性的,已弃用。

注意事项

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

在单用户模式下禁用事件触发器。如果错误的事件触发器禁用了数据库,以至于您甚至无法取消触发器,请以单用户模式重新启动,您将能够执行此操作。

示例

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