我有一个要求,我必须在PostgreSQL服务器中为每个登录用户创建一个新数据库。因此每个用户有1个数据库。 此外,该数据库将具有几个将被调用的自定义函数。 我想在创建数据库后立即自动创建自定义函数的过程。因此,我不必明确地在每个数据库中执行该函数。
这可能吗?
答案 0 :(得分:1)
来自docs:
CREATE DATABASE实际上是通过复制现有数据库来实现的。通过 默认情况下,它复制名为template1的标准系统数据库。从而 该数据库是"模板"从中创建新数据库。如果 您将对象添加到template1,这些对象将被复制到 后来创建了用户数据库此行为允许站点本地 修改数据库中的标准对象集。对于 例如,如果在template1中安装过程语言PL / Perl, 它将自动在用户数据库中可用而无需任何额外的 创建这些数据库时采取的行动。
所以你可以创建"默认" template1 db中的对象和" clone"它。或者您可以在示例数据库中创建所有需要的关系(表,函数等),然后" clone"它与
create database new_db with template sample_db;
您可以使用不同的"默认"创建多个模板数据库。预先创建的对象,只是"克隆"他们根据需要。
阅读上述有关限制等的文档。
<强>更新强> Adding Postgres Objects to Template1将告诉您如何使用pgadmin
执行此操作