使用查询工具在pgAdmin 4中查询时设置默认架构

18
每当我在pgAdmin 4中执行SQL命令时,我都需要将schema_name与表格连接起来。 例如:
SELECT * FROM my_schema.users //where myschema is schema name
ORDER BY id ASC  
< p >有没有办法在 pgAdmin 4 中执行SQL命令时不用模式名称,在事先设置默认模式的情况下执行。

像这样的东西

SELECT * FROM programme
ORDER BY id ASC 

- 在不指定模式名称的情况下使用表。

pgAdmin 4 中有没有一种方法可以设置默认模式以在 SQL 工具中查询?

3个回答

32

你可以用两种方式来完成:

SET search_path = my_schema, "$user", public; -- For current session only

ALTER ROLE your_role SET search_path = my_schema, "$user", public; -- Persistent, for role

您还可以像设置角色一样设置整个数据库。

编辑:为了解释它的作用-它会更改Postgres搜索与模式名称没有前缀的对象标识符匹配的对象的位置和顺序。


也许是 Stack Overflow 让我变懒了。直到看到这个答案,我才想到在查询工具窗口中尝试一下!无论如何,谢谢! - AbuNassar
1
@ieXcept 这些是模式的名称,当 PostgreSQL 在搜索对象(如表、视图)时,如果这些对象没有前缀模式名称,就会查找这些模式。假设您有自己的模式,"$user" 将被替换为您的角色名称。这些的顺序很重要,从左到右排列。 - Łukasz Kamiński

0
你可以为服务器设置search_path 在注册服务器中设置选项

0

你可能需要重新启动pgAdmin4,以便search_path开始工作。至少在我的情况下是这样。

如果要确认在pgAdmin4中设置了search_path,可以进行以下双重检查: 登录/组角色 -> 右键单击用户(默认为“postgres”) -> 属性 -> 参数选项卡。在这里,您应该看到新的参数“search_path”,其值为“your_schema_name”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接