ALTER TRIGGER命令用于更改触发器定义,例如触发器名称、依赖关系、触发器开关等。

语法

  • 更改表table_name的触发器名称。
    ALTER TRIGGER name ON table_name RENAME TO new_name
  • 更改表table_name的触发器name依赖的插件为extension_name
    ALTER TRIGGER name ON table_name DEPENDS ON EXTENSION extension_name
  • 更改schema下名称唯一的触发器name是否有效。
    ALTER TRIGGER [schema.]name ENABLE | DISABLE;
    说明
    • 同一个Schema下触发器名称必须唯一。
    • 内置触发器的状态无法修改。

参数

参数名称 描述
schema 触发器依赖的表所在的命名空间,默认是public。
name 触发器依赖的表的名称。
new_name 触发器的新名称。
extenion_name 触发器依赖的插件名称。
ENABLE/DIABLE 触发器是否有效的状态。
  • ENABLE:有效
  • DISABLE:无效

示例

  • 更改触发器名称。
    ALTER TRIGGER emp_stamp ON emp RENAME TO emp_track_chgs;
  • 更改触发器依赖的插件。
    ALTER TRIGGER emp_stamp ON emp DEPENDS ON EXTENSION emplib;
  • 开启或关闭触发器。
    testdb=> select tgrelid,tgname,tgenabled from pg_trigger;
     tgrelid |  tgname   | tgenabled
    ---------+-----------+-----------
       16386 | emp_audit | O
    (1 row)
    testdb=> insert into emp values(1,'Alice');
    ERROR:  INSERT is illegal on emp.
    CONTEXT:  PL/pgSQL function process_emp_audit() line 12 at RAISE
    testdb=> ALTER TRIGGER emp_audit DISABLE;
    ALTER TRIGGER
    testdb=> insert into emp values(1,'Alice');
    INSERT 0 1
    testdb=> ALTER TRIGGER emp_audit ENABLE;
    ALTER TRIGGER
    testdb=> insert into emp values(2,'Bob');
    ERROR:  INSERT is illegal on emp.
    CONTEXT:  PL/pgSQL function process_emp_audit() line 12 at RAISE