2022年3月1日 作者 zeroheart

pg跨模式查询,不用加前缀

修改模式的所属即可

ALTER TABLE “xxx”.”table” OWNER TO “zzz”;

show search_path ;
我可以设置当前会话的search_path:

set search_path = "$user", public,postgis;

同样,我可以使用以下命令永久设置给定数据库的search_path:
alter database database set search_path = "$user",postgis ;

我可以使用以下内容为给定角色(用户)永久设置search_path:
alter role username set search_path = "$user",postgis ;
您可以在目录表 pg_db_role_setting中找到角色和数据库的配置设置.
此查询检索给定角色或数据库的任何设置:

SELECT r.rolname,d.datname,rs.setconfig
FROM pg_db_role_setting rs
left JOIN pg_roles r ON r.oID = rs.setrole
left JOIN pg_database d ON d.oID = rs.setdatabase
WHERE r.rolname = 'username' OR d.datname = 'database';
要取消设置角色或数据库的任何设置 – 此特定示例中的search_path:

ALTER RolE username reset search_path;
要么:

ALTER DATABASE database reset search_path;
要么

ALTER RolE myrole in DATABASE mydb reset search_path;
切勿手动操作系统目录(pg_catalog.*)中的数据.按照ALTER ROLE和ALTER DATABASE手册中的说明使用DDL命令.实际上,reset命令从pg_db_role_setting中删除一行,允许基本设置再次生效.我不会称之为复杂.

参考:postgresql – 给定数据库和用户的search_path是什么? – 编程之家 (jb51.cc)