SET search_path TO schema_b, schema_c, public;
我想把我的模式添加到队列的前面。
SET search_path TO schema_a + search_path; --doesn't work
我在思考类比于我在BASH中会做的事情。
PATH=path_a:$PATH
奖励问题,也许相关:有没有办法我可以临时存储当前路径,这样我就可以将其更改为完全不同的内容,然后在不知道原来路径的情况下恢复它?
SET search_path TO schema_b, schema_c, public;
我想把我的模式添加到队列的前面。
SET search_path TO schema_a + search_path; --doesn't work
我在思考类比于我在BASH中会做的事情。
PATH=path_a:$PATH
奖励问题,也许相关:有没有办法我可以临时存储当前路径,这样我就可以将其更改为完全不同的内容,然后在不知道原来路径的情况下恢复它?
SELECT set_config('search_path', 'fred,'||current_setting('search_path'), false);
false表示这不是一个事务-LOCAL设置。
对于奖励问题,您可以将值存储在自定义设置中:
SELECT set_config('tmp.search_path', current_setting('search_path'), false);
从9.2版本开始,你甚至不需要在postgresql.conf中定义这个设置。
search_path:
\set my_path schema_b, schema_c, public
set search_path to :my_path;
然后,每当你想要扩展search_path时,就像这样做:
\set my_path schema_a, :my_path
set search_path to :my_path;
这不允许存储现有的 search_path 值。
\gset psql命令是一种不错的方式。
SELECT current_setting('search_path') AS my_path \gset
set search_path to schema_a, :my_path;
的文档可以在这里找到,并且在depesz.com上有很好的演示。
由于我无法访问9.3版本的实例,所以无法测试此功能。如果有人能够确认按照我所描述的方式工作,我将非常感激。谢谢!
SELECT set_config('search_path', '"$user", mview,'||ARRAY_TO_STRING(
ARRAY(
SELECT DISTINCT elem FROM
UNNEST(
STRING_TO_ARRAY(
REPLACE(
current_setting('search_path'), ' ', '')
, ',')) elem
WHERE elem <> '"$user"')
,','), false);
它将确保:
"$user" 总是在搜索路径的开头mview 替换为您选择的新搜索路径条目
SELECT set_cont('search_path')作为子查询在ALTER USER name SET search_path ...中使用的一种方法。 - vrmsAn error occurred:
- undefined