如何在PostgreSQL中复制函数

时间:2016-08-05 11:09:49

标签: postgresql sqitch

我想编写sqitch部署脚本来创建新版本的触发器。为了确保还原脚本将函数还原到以前的版本,我想备份此函数。有没有办法复制(RENAME TO无效!)触发功能的新名称?

1 个答案:

答案 0 :(得分:0)

RENAME TO应该有效。你忘了括号还是把它们包括在另一边?

使用alter table rename的括号有点棘手:

postgres=# create function test() returns bool language sql as $$ select true; $$;
CREATE FUNCTION
postgres=# alter function test() rename to old_test();
ERROR:  syntax error at or near "("
LINE 1: alter function test() rename to old_test();
                                                ^
postgres=# alter function test() rename to old_test;
ALTER FUNCTION

如果这还不够,那么在解析和重命名后,你可以{pg_get_functiondef DOEXECUTE输出:

select * from pg_get_functiondef('old_test'::regproc);