我使用以下命令检查PostgreSQL数据库中用户的组或角色,
select rolname from pg_authid where pg_has_role('some_username', rolname, 'member');
如图所示,我必须在上面的查询中手动键入用户名,就像上面的
'some_username'
一样。有没有一种方法可以为当前的用户查询它,我是指与数据库连接良好的用户。像下面的命令,
select rolname from pg_authid where pg_has_role(current_user, rolname, 'member');
这个命令不能正常工作。它从
rolname
返回完整的pg_authid
列。 最佳答案
要访问pg_authid
您需要成为超级用户,因此current_user
将成为超级用户,并且该用户具有所有角色。
要在使用非超级用户登录时获取该信息,请使用pg_roles
Quote from the manual for pg_roles
这只是pg_authid的一个公共可读视图,它将清空password字段。
select rolname
from pg_roles
where pg_has_role(current_user, rolname, 'member');
关于sql - 选择current_user的组名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52076227/