更新时间:2025-07-10 GMT+08:00

ALTER TRIGGER

功能描述

修改触发器定义。

注意事项

只有触发器所在表的所有者可以执行ALTER TRIGGER操作,系统管理员默认拥有此权限。

语法格式

1
ALTER TRIGGER trigger_name ON table_name RENAME TO new_name;

参数说明

表1 ALTER TRIGGER参数说明

参数

描述

取值范围

trigger_name

需要修改的触发器的名称。

有效的触发器名。

table_name

需要修改的触发器所在的表名称。

触发器所在的有效表名。

new_name

新的触发器名称。

字符串,需符合标识符命名规范

示例

创建示例表test_trigger_src_tbl和test_trigger_des_tbl。

1
2
3
4
5
DROP TABLE IF EXISTS test_trigger_src_tbl;
DROP TABLE IF EXISTS test_trigger_des_tbl;

CREATE TABLE test_trigger_src_tbl(id1 INT, id2 INT, id3 INT);
CREATE TABLE test_trigger_des_tbl(id1 INT, id2 INT, id3 INT);

创建触发器函数tri_insert_func()。

1
2
3
4
5
6
7
8
9
DROP FUNCTION IF EXISTS tri_insert_func;
CREATE OR REPLACE FUNCTION tri_insert_func() RETURNS TRIGGER AS
           $$
           DECLARE
           BEGIN
                   INSERT INTO test_trigger_des_tbl VALUES(NEW.id1, NEW.id2, NEW.id3);
                   RETURN NEW;
           END
           $$ LANGUAGE PLPGSQL;

创建触发器insert_trigger。

1
2
3
4
CREATE TRIGGER insert_trigger
           BEFORE INSERT ON test_trigger_src_tbl
           FOR EACH ROW
           EXECUTE PROCEDURE tri_insert_func();

修改触发器insert_trigger。

1
ALTER TRIGGER insert_trigger ON test_trigger_src_tbl RENAME TO delete_trigger_renamed;

禁用触发器delete_trigger_renamed。

1
ALTER TABLE test_trigger_src_tbl DISABLE TRIGGER delete_trigger_renamed;  

禁用表test_trigger_src_tbl所有触发器。

1
ALTER TABLE test_trigger_src_tbl DISABLE TRIGGER ALL;