我想知道是否可以在单个查询中进行SET和SELECT。像这样:
SET LOCAL search_path TO "1"; SET LOCAL ROLE "user"; SELECT * from posts;
答案 0 :(得分:2)
你可以这样做:
with some_set as (
select set_config('search_path', '"1"', true)
)
select * from posts;
或SELECT
只有set_config()
来电,没有CTE,但这一般不会对您有所帮助,因为:
无法保证您将获得所需的查询部分执行顺序(请记住,SQL是一种声明性语言,另请参阅https://www.google.com/search?q=postgresql+cte+order+not+guaranteed&oq=postgresql+cte+order+&aqs=chrome.1.69i57j69i59l2j69i64.6362j0j7&sourceid=chrome&ie=UTF-8和https://dba.stackexchange.com/questions/86263/managing-cte-execution-order-under-uncertainty)
AFAIK无法使用SELECT
切换数据库角色。