云数据库 GAUSSDB-语句行为:search_path
search_path
参数说明:当一个被引用对象没有指定模式时,此参数设置模式搜索顺序。该参数可在PDB级别设置。
参数类型:字符串
参数单位:无
取值范围:由一个或多个模式名构成的字符串,不同的模式名用逗号隔开。
- 设置为'"$user",public'时,支持共享数据库(没有用户具有私有模式和所有共享使用public),用户私有模式和这些功能的组合使用。可以通过改变默认搜索路径来获得其他效果,无论是全局化的还是私有化的。
- 设置为空字符串('')的时候,系统会自动转换成一对双引号。
- 设置的内容中包含双引号时,系统会认为是不安全字符,会将每个双引号转换成一对双引号。
默认值:'"$user",public'。在PDB场景内,若未设置该参数,则继承来自全局的设置。
$user表示与当前会话用户名同名的模式名,如果这样的模式不存在,$user将被忽略。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:
- 当前会话存放临时表的模式时,可以使用别名pg_temp将它列在搜索路径中,如'pg_temp,public'。存放临时表的模式始终会作为第一个被搜索的对象,排在pg_catalog和search_path中所有模式的前面,即具有第一搜索优先级。建议用户不要在search_path中显式设置pg_temp。如果在search_path中指定了pg_temp,但不是在最前面,系统会提示设置无效,pg_temp仍被优先搜索。通过使用别名pg_temp,系统只会在存放临时表的模式中搜索表、视图和数据类型这样的数据库对象,不会在里面搜索函数或运算符这样的数据库对象。
- 系统表所在的模式pg_catalog,总是排在search_path中指定的所有模式前面被搜索,即具有第二搜索优先级(pg_temp具有第一搜索优先级)。建议用户不要在search_path中显式设置pg_catalog。如果在search_path中指定了pg_catalog,但不是在最前面,系统会提示设置无效,pg_catalog仍被第二优先搜索。
- 当没有指定一个特定模式而创建一个对象时,它们被放置到以search_path为命名的第一个有效模式中。当搜索路径为空时,会报错误。
- 可以通过SQL函数current_schema()检测当前搜索路径的有效值。这和search_path的值不完全相同,因为current_schema()显示search_path中首位有效的模式名称。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
- GaussDB工具_gaussdb怎么读_高斯数据库工具_华为云
- GaussDB TP_GaussDB和MySQL区别_高斯数据库TP_华为云
- GaussDB学习_gaussdb教程_高斯数据库学习_华为云
- GaussDB咋样_openGauss和GaussDB的区别_高斯数据库咋样_华为云
- GaussDB数据库常用语句_GaussDB数据库_高斯数据库常用语句
- GaussDB用法_GaussDB数据库使用方法_高斯数据库如何使用_华为云
- 数据安全-数据库安全-数据库审计工具
- GaussDB连接_华为Gaussdb_高斯数据库连接_华为云
- GaussDB数据库_gaussdb类型_高斯数据库_华为云
- GaussDB视频教程_gaussdb查看表结构语句_高斯数据库视频教程_华为云