1
我想編寫sqitch部署腳本來創建新版本的觸發器。爲了確保恢復腳本將功能恢復到以前的版本,我想對此功能進行備份。有什麼方法可以複製(RENAME TO不工作!)用新名稱觸發功能?如何在PostgreSQL中複製功能
我想編寫sqitch部署腳本來創建新版本的觸發器。爲了確保恢復腳本將功能恢復到以前的版本,我想對此功能進行備份。有什麼方法可以複製(RENAME TO不工作!)用新名稱觸發功能?如何在PostgreSQL中複製功能
RENAME TO應該工作。你忘記了括號還是將它們包含在另一邊?
括號用alter table重命名是有點棘手:
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
如果這還不夠,那麼你可以DO
和EXECUTE
pg_get_functiondef的輸出解析和重命名後:
select * from pg_get_functiondef('old_test'::regproc);
RENAME TO在CREATE TRIGGER語句中更改對重命名觸發器函數的所有引用,所以我無法使用它來進行備份。 – Jarek
[ PG-PROC(https://www.postgresql.org/docs/current/static/catalog-pg-proc.html)?我猜你在'proname'和'prosrc'列中很有趣。 – Abelisto