Postgres:修改现有的search_path(保留当前值)

Ste*_*tew 6 schema postgresql

有时我想扩展现有的搜索路径,而不是替换它,比如:

首先说它已经设置如下:

SET search_path TO schema_b, schema_c, public;
Run Code Online (Sandbox Code Playgroud)

我想将我的架构添加到行的前面:

SET search_path TO schema_a + search_path;   --doesn't work
Run Code Online (Sandbox Code Playgroud)

我的想法类似于我在 BASH 中所做的:

PATH=path_a:$PATH
Run Code Online (Sandbox Code Playgroud)

额外的问题,可能是相关的:有没有办法可以暂时存储当前路径,以便我可以将其更改为完全不同的内容,然后无需知道它是什么就可以恢复它?

Cra*_*ger 8

SELECT set_config('search_path', 'fred,'||current_setting('search_path'), false);
Run Code Online (Sandbox Code Playgroud)

false说,这是不是一个交易-LOCAL设置。

对于奖金问题,您可以将值存储在自定义设置中

SELECT set_config('tmp.search_path', current_setting('search_path'), false);
Run Code Online (Sandbox Code Playgroud)

从 9.2 版开始,您甚至不必在postgresql.conf.