ALTER TRIGGER
功能描述
修改触发器定义。
注意事项
只有触发器所在表的所有者可以执行ALTER TRIGGER操作,系统管理员默认拥有此权限。
语法格式
1
|
ALTER TRIGGER trigger_name ON table_name RENAME TO new_name; |
参数说明
- trigger_name
要修改的触发器名字。
取值范围:已存在的触发器。
- table_name
要修改的触发器所在的表名称。
取值范围:已存在的含触发器的表。
- new_name
修改后的新的触发器名字。
取值范围:符合标识符命名规范的字符串,最大长度不超过63个字符,且不能与所在表上其他触发器同名。
示例
创建源表及触发表:
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触发器:
1 2 3 4 |
CREATE TRIGGER insert_trigger BEFORE INSERT ON test_trigger_src_tbl FOR EACH ROW EXECUTE PROCEDURE tri_insert_func(); |
修改触发器delete_trigger:
1
|
ALTER TRIGGER insert_trigger ON test_trigger_src_tbl RENAME TO insert_trigger_renamed; |
禁用触发器insert_trigger:
1
|
ALTER TABLE test_trigger_src_tbl DISABLE TRIGGER insert_trigger_renamed; |
禁用当前表test_trigger_src_tbl所有触发器:
1
|
ALTER TABLE test_trigger_src_tbl DISABLE TRIGGER ALL; |