我正在阅读 Oreilly 的PostgreSQL: Up and Running,并且在使用模式组织数据库部分中,它说search_path
可以在数据库级别设置:
例如,如果我们希望 contrib 中的所有对象都可以在没有模式限定的情况下访问,我们将更改我们的数据库,如下所示:
ALTER DATABASE mydb SET search_path="$user",public,contrib;
但是,在键入上面的命令后,我仍然无法在public
不限定它们的情况下引用其他模式中的表:
ALTER DATABASE auth SET search_path="$user",public,staging;`
\d users
Run Code Online (Sandbox Code Playgroud)
给出:
Did not find any relation named "users".
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用\d staging.users
,它会起作用。
SHOW search_path;
Run Code Online (Sandbox Code Playgroud)
给出:
search_path
----------------
"$user",public
Run Code Online (Sandbox Code Playgroud)
是否默认search_path
从postgresql.conf
覆盖每个数据库的设置值与ALTER DATABASE ... SET search_path
?如果是这样,每个数据库的值有什么用?