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 | 触发器是否有效的状态。
|
示例
- 更改触发器名称。
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