在postgresql中使用模式

时间:2012-06-15 07:11:43

标签: postgresql database-schema

我使用postgresql开发了一个应用程序,效果很好。

现在我需要创建同一个应用程序的多个实例,但我只有一个数据库。所以我正在考虑使用模式,以便我可以将每个实例表分组到不同的模式中。

现在,我不想重写我的所有函数和脚本,因此我想知道是否可以使用某些指令来指示数据库对特定模式进行操作。只是为了让它更清楚,你知道用c ++做什么

using namespace std;

这样您就可以使用cout代替std::cout了?如果可能的话,我想使用类似的东西。

1 个答案:

答案 0 :(得分:14)

您要查找的参数是search_path - 它列出了查询将查找的模式。因此,您可以执行以下操作:

CREATE TABLE schema1.tt ...
CREATE TABLE schema2.tt ...
CREATE FUNCTION schema1.foo() ...
CREATE FUNCTION schema2.foo() ...
SET search_path = schema1, something_else;
SELECT * FROM tt;        -- schema1.tt
SELECT * FROM schema2.tt -- schema2.tt
SELECT foo();            -- calls schema1.foo
SELECT schema2.foo();    -- calls schema2.foo

请注意,如果查询的计划保存在foo()的主体内,那么您可能会得到意外的结果。如果您使用重复的表,我建议您始终在plpgsql函数中明确列出引用表的模式。如果没有,请确保您已经进行了测试,以检查chaning search_path的行为。

哦 - 您也可以为函数体显式设置search_path - 有关详细信息,请参阅手册的CREATE FUNCTION参考。