【发布时间】:2019-12-08 22:39:30
【问题描述】:
我在 database1 中有 schema1。我想将 schema1 的所有功能移动到 database2 中存在的 schema2。我已将database1的备份文件恢复到database2。并更改了架构名称。函数调用的模式名称自动更改。但是在函数定义中,模式名称没有改变。例如:
CREATE OR REPLACE FUNCTION schema2.execute(..)
BEGIN
select schema1."VALIDATE_SESSION"(....)
end
如何自动将“schema1”更改为“schema2”?
我试图将当前模式名称存储在变量中并将其附加到表中。但是调用current_schema() 会返回“public”。如何获取用户创建的当前模式?因为每次生成脚本时我都需要更改架构名称。
【问题讨论】:
-
我很确定,在导出模式时,将有一个选项可以在生成脚本文件时跳过模式名称。请查看postgresql.org/docs/9.3/app-pgdump.html .... 你是如何备份脚本的?
-
目标数据库中是否存在 schema1?如果没有,您可以简单地将备份恢复到目标数据库,然后将 schema1 重命名为 schema2
-
@a_horse_with_no_name schema1 在源数据库中。在目标数据库中更改架构名称只会更改函数声明架构,而不是函数定义。
-
我直接从 pgadmin 获取备份。可以选择在数据库级别进行备份@Vivek
标签: postgresql function database-design database-schema