在postgresql中使用模式

Ott*_*ana 9 postgresql database-schema

我使用postgresql开发了一个应用程序,它运行良好.

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

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

using namespace std;
Run Code Online (Sandbox Code Playgroud)

这样你可以用cout而不是std::cout?如果可能的话,我想使用类似的东西.

Ric*_*ton 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
Run Code Online (Sandbox Code Playgroud)

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

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