我想找到当前用户的search_path并永久修改它。
我可以使用show search_path
找到它,但当我尝试使用下面的查询查找时,它什么也没有返回
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 = 'vishal'
我的问题是:
1.为什么这两个返回不同的结果。我认为show search_path
返回默认值为"$user", public
,如果什么都没有找到。
1.是否可以通过使用show search_path
查找当前用户的search_path并使用下面的命令将myschema附加到它来永久设置它?
ALTER ROLE vishal in DATABASE mydb set search_path = "$user", public, myschema;
2条答案
按热度按时间ggazkfy81#
如果你想知道这个设置是从哪里来的,试试
pg_settings
:然后,您可以看到当前设置的来源。
这将帮助您找出为什么两个会话具有不同的
search_path
集。您可以按照您的建议使用
ALTER ROLE ... IN DATABASE
设置search_path
,但请注意1.在断开连接并重新连接之前,该设置不会生效。
1.该设置将被会话中的任何
SET
命令覆盖。bvjveswy2#
更直接一点