HAS_ROLE
检查是否已将 Vertica 用户角色授予指定的用户或角色,并返回 true 或 false。
您还可以查询系统表 ROLES、GRANTS 和 USERS,以获取有关用户及其角色分配的信息。有关详细信息,请参阅查看用户角色。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
稳定语法
HAS_ROLE( [ 'grantee' ,] 'verify‑role' );
参数
-
grantee
- 仅对超级用户有效,指定要查找的用户或角色的名称。如果忽略此实参,则函数将使用当前用户名 (
CURRENT_USER
)。如果指定了角色,Vertica 会检查是否向此角色授予在 verify‑role 中指定的角色。重要
如果非超级用户提供此实参,Vertica 将返回错误。 -
verify‑role
- 要为 grantee 验证的角色名称。
特权
无
示例
在以下示例中,dbadmin
用户检查是否为用户 MikeL
分配了 admnistrator
角色:
=> \c
You are now connected as user "dbadmin".
=> SELECT HAS_ROLE('MikeL', 'administrator');
HAS_ROLE
----------
t
(1 row)
用户 MikeL
检查其是否具有 regional_manager
角色:
=> \c - MikeL
You are now connected as user "MikeL".
=> SELECT HAS_ROLE('regional_manager');
HAS_ROLE
----------
f
(1 row)
dbadmin 将 regional_manager
角色授予 administrator
角色。再次检查时,MikeL
会验证他现在具有 regional_manager
角色:
dbadmin=> \c
You are now connected as user "dbadmin".
dbadmin=> GRANT regional_manager to administrator;
GRANT ROLE
dbadmin=> \c - MikeL
You are now connected as user "MikeL".
dbadmin=> SELECT HAS_ROLE('regional_manager');
HAS_ROLE
----------
t
(1 row)