CURRENT_ROLE 运算符

CURRENT_ROLE 运算符返回包含正在运行会话的用户的当前启用的角色的名称的字符串。或使用 SET ROLE 语句在会话中显式地设置了此 role ,或当当前用户连接到数据库时,隐式地设置为缺省的角色。如果该用户不持有角色,或如果未授予当前启用的用户角色,则 CURRENT_ROLE 返回 NULL 值。如果尚未授予了用户角色,但已将缺省角色授予了 PUBLIC,且已显式地或隐式地启用了此缺省角色,则 CURRENT_ROLE 返回此缺省角色的名称。

下一语句展示您可以如何使用 CURRENT_ROLE 运算符:
select CURRENT_ROLE FROM systables WHERE tabid = 1;

CURRENT_ROLE 运算符不更改角色的标识符的字母大小写。如果您在表达式中使用 CURRENT_ROLE,且当前角色为 Czarina,则 CURRENT_ROLE 运算符返回 Czarina,而不是 czarina

如果您指定 CURRENT_ROLE 作为列的缺省值,则该列必须有 CHAR、VARCHAR、LVARCHAR、NCHAR 或 NVARCHAR 数据类型。因为角色的名称是授权标识符,因此如果列长度小于 32 字节,则可能发生截断。