我有一大堆用户定义的程序,需要在几个单独的目录(数据库)上使用。
通常在pg_catalog.pg_proc中看到的内置过程似乎是 反映在所有数据库的pg_catalog模式中。我希望在postgres数据库中创建一个函数可以使它可以普遍访问,但不能,无论是在postgres.pg_catalog或postgres.public架构中创建的。
有谁知道我如何能够普遍提供用户定义的程序?
我尝试伪造名称空间和所有者,向公众授予执行权,并在我的左肩上举行黑猫(但不是在满月期间)。
将其设置为扩展工作吗? (这可能需要我的环境进行一些谈判和讨论,这是我还没有尝试过的唯一原因。)
提前致谢
答案 0 :(得分:2)
PostgreSQL数据库完全隔离。您需要在每个扩展程序中安装扩展程序。这是一个缓解痛苦的shell脚本:
for DB in $(psql -t -c "SELECT datname FROM pg_database WHERE datname NOT IN ('postgres', 'template0', 'template1')"); do
psql -d $DB -c "CREATE EXTENSION IF NOT EXISTS foo"
done
或者这是一个数据库,您正在谈论多个模式?