如何在所有数据库中提供postgres用户定义的函数?

时间:2017-08-10 17:54:58

标签: postgresql

我有一大堆用户定义的程序,需要在几个单独的目录(数据库)上使用。

通常在pg_catalog.pg_proc中看到的内置过程似乎是 反映在所有数据库的pg_catalog模式中。我希望在postgres数据库中创建一个函数可以使它可以普遍访问,但不能,无论是在postgres.pg_catalog或postgres.public架构中创建的。

有谁知道我如何能够普遍提供用户定义的程序?

我尝试伪造名称空间和所有者,向公众授予执行权,并在我的左肩上举行黑猫(但不是在满月期间)。

将其设置为扩展工作吗? (这可能需要我的环境进行一些谈判和讨论,这是我还没有尝试过的唯一原因。)

提前致谢

1 个答案:

答案 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

或者这是一个数据库,您正在谈论多个模式?