2017-07-27 42 views
1

我想知道是否可以在单个查询中进行SET和SELECT。事情是这样的:单个查询中的SET和SELECT?

SET LOCAL search_path TO "1"; SET LOCAL ROLE "user"; SELECT * from posts; 

回答

2

你可以做这样的事情:

with some_set as (
    select set_config('search_path', '"1"', true) 
) 
select * from posts; 

或只是set_config()呼叫W/O CTE SELECT,但一般不会帮你,因为:

+0

Thanks @Nick!要明确,WITH确保它在'select * from posts'之前执行?或者甚至没有? – Matt

+0

不,它不会:“在WITH中使用数据修改语句时,指定更新实际发生的顺序是不可预知的。” https://www.postgresql.org/docs/current/static/queries-with.html - 在我的实验中,主'SELECT'在*'select set_config'之前执行*,这就是为什么我写道它不会帮助你。 – Nick

+0

看起来像'select set_config('timezone',tzone,true),to_char(tstamp,mask)'按预期工作。 –