PostgreSQL 9.3 - 创建组角色会导致权限问题

时间:2017-10-03 08:44:15

标签: sql postgresql

我创建了以下组角色

CREATE ROLE hr_user
  NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

然后我提供了一些登录角色新的群组角色权限:

GRANT hr_user TO "iris";
GRANT hr_user TO "jeff";

现在,我有一个查询显示所有工作人员是否有“hr_users”,如果不是,它只显示特定状态的用户:

select *
from users
where case when (select pg_has_role(select "current_user"(), 'hr_user'::name, 'MEMBER'::text)) then 1=1 else userstatus <>'Active' end

基本上这个查询意味着:

如果用户有hr_user,则执行:

select *
from users
where 1=1

如果用户没有hr_user,请执行:

 select *
 from users
 where userstatus <>'Active'

我的PgAdmin控制台可以正常使用。

但是,当用户尝试从他们的桌面软件访问时,会出现一个奇怪的错误:

  

错误:角色“虹膜”不存在

如果删除新代码,则错误消失。

我的问题: 为什么创建新组角色会导致PostgreSQL认为用户角色不存在?我该怎么办?

0 个答案:

没有答案