CREATE EVENT TRIGGER — 定义一个新的事件触发器
CREATE EVENT TRIGGERnameONevent[ WHENfilter_variableIN (filter_value [, ... ]) [ AND ... ] ] EXECUTE { FUNCTION | PROCEDURE }function_name()
   CREATE EVENT TRIGGER创建一个新的事件触发器。
   只要指定的事件发生并且与该触发器相关的WHEN条件(如果有)被
   满足,该触发器的函数将被执行。关于事件触发器的一般性介绍可见
   Chapter 40。创建事件触发器的用户会成为它的拥有者。
  
name给新触发器的名称。在该数据库中这个名称必须唯一。
event会触发对给定函数调用的事件名称。更多事件名称的信息请见 Section 40.1。
filter_variable
      用来过滤事件的变量名称。这可以用来限制触发器只为它支持的那一部分
      情况引发。当前唯一支持的
      filter_variable
      是TAG。
     
filter_value
      与该触发器要为其引发的
      filter_variable相关联
      的一个值列表。对于TAG,这表示一个命令标签列表(例如
      'DROP FUNCTION')。
     
function_name
      一个用户提供的函数,它被声明为没有参数并且返回类型
      event_trigger。
     
      ===In the syntax of CREATE EVENT TRIGGER, the keywords
      FUNCTION and PROCEDURE are
      equivalent, but the referenced function must in any case be a function,
      not a procedure.  The use of the keyword PROCEDURE
      here is historical and deprecated.
     
禁止执行任何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语句。