search_path
英文手册覆盖始于 PostgreSQL 7.4. 来源历史与运行验证各自保留独立版本边界。
当前阅读 PG 18·选择有来源记录的版本
- boot val
- "$user", public
- category
- Client Connection Defaults / Statement Behavior
- context
- user
- documented
- true
- enumvals
- 未知
- extra desc
- 未知
- lang
- en
- max val
- 未知
- metadata version
- 18
- min val
- 未知
- name
- search_path
- short desc
- Sets the schema search order for names that are not schema-qualified.
- source
- pg-settings-source-snapshot
- unit
- 未知
- vartype
- string
版本定义 PG 18
这个变量指定当一个对象(表、数据类型、函数等)被用一个无模式限定的简单名称引用时,搜索该对象时的模式顺序。当在不同模式中有同名对象时,将使用第一个在搜索路径中被找到的对象。一个不属于搜索路径中任何一个模式的对象只能通过用限定名(带点号)指定包含它的模式来引用。
search_path的值必须是一个逗号分隔的模式名列表。任何不是一个已有模式的名称,或者是一个用户不具有USAGE权限的模式,将被静默忽略。
如果列表项之一是特殊名$user,则具有CURRENT_USER返回的名字的模式将取代它(如果有这样一个模式并且该用户有该模式的USAGE权限;如果没有,$user会被忽略)。
系统目录模式pg_catalog总是被搜索,不管它是否在搜索路径中被提及。如果它在路径中被提及,那么它将被按照路径指定的顺序搜索。如果pg_catalog不在路径中,则它将在任何路径项之前被搜索。
同样,如果存在,当前会话的临时表模式pg_temp_总是被搜索。可以通过使用别名nnnpg_temp在路径中显式列出它。如果它没有列在路径中,则首先搜索它(甚至在pg_catalog之前)。然而,临时模式仅用于搜索关系(表、视图、序列等)和数据类型名称。它永远不会用于搜索函数或操作符名称。
当对象创建时没有指定一个特定目标模式,它们将被放置在search_path中第一个合法模式中。如果搜索路径为空将报告一个错误。
这个参数的默认值是"$user", public。这种设置支持共享使用数据库(用户没有私有模式,所有人共享使用public)、每个用户拥有私有模式,以及二者的组合。还可以通过全局或针对每个用户修改默认搜索路径设置来获得其他效果。
更多有关模式处理的信息,请参考第 5.10 节。特别地,只有当数据库只有一个用户或者有少数的相互信任的用户时,默认配置是合适的。
搜索路径的当前有效值可以通过SQL函数current_schemas检查(见第 9.27 节)。它和检查search_path的值不太一样,因为current_schemas显示出现在search_path中的项如何被解析。
比较版本
来源引用
定义来源
center · PostgreSQL 18 · english-manuals:82c59c3eac5889f57b143abafcf11e0b2eb6eff014da8a9c1d6d78ba6d75a464
正文语言: zh-Hans · 2026-09-11@29c86d9