我正在尝试将postgresql12.2恢复到较低的postgresql9.4.12。我遇到了使用“for each row execute function”恢复触发器的问题,因为pg12正在使用 EXECUTE { FUNCTION | PROCEDURE } function_name ( arguments )
第9.4页 EXECUTE PROCEDURE function_name ( arguments )
我试图通过以下方式从原始数据库获取所有触发器:
SELECT pg_get_triggerdef(f.oid)
FROM pg_catalog.pg_trigger f
然后替换function->procedure,最后创建新的触发器。但是对于某些触发器,我得到一个错误,即触发器已经存在(尽管没有列出)。除此之外,还有一些自动生成的(?)触发器,其名称类似于“ri\u constrainttrigger\u c\u 121395”,我在原始数据库中看不到。
我不确定是否可以从新恢复的数据库中删除所有触发器,然后用上面粘贴的脚本重新创建它们。
我不确定这是否重要,但要还原我使用的: pg_restore -d database -v -h host -p port -U postgres dumpFileName
暂无答案!
目前还没有任何答案,快来回答吧!