2016-08-05 7 views
1

sqitch 배포 스크립트를 작성하여 새 버전의 트리거를 작성하고 싶습니다. 되돌리기 스크립트가 기능을 이전 버전으로 되돌리려면이 기능을 백업하고 싶습니다. 새 이름으로 트리거 함수를 복사 (RENAME TO가 작동하지 않습니다!) 할 수있는 방법이 있습니까?PostgreSQL에서 함수를 복사하는 방법

+0

을 pg-proc] (https://www.postgresql.org/docs/current/static/catalog-pg-proc.html)? 여러분은'proname'과'prosrc' 칼럼에서 흥미 롭습니다. – Abelisto

답변

0

RENAME TO가 작동해야합니다. 당신은 괄호를 잊거나 다른 편에 그들을 포함하고 있습니까? ALTER 테이블 이름 바꾸기와

괄호는 조금 까다로운 있습니다

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 

그 다음, 충분하지 않은 경우 수 DOEXECUTE 분석하고 이름을 변경 한 후 pg_get_functiondef의 출력 : [

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

RENAME TO는 CREATE TRIGGER 문에서 이름이 바뀐 트리거 함수에 대한 모든 참조를 변경하므로 백업 할 때 사용할 수 없습니다. – Jarek