DEFAULT_ROLE 运算符

DEFAULT_ROLE 运算符求值为包含已授予了正在运行会话的用户的缺省角色的名称的字符串。此缺省角色无需当前已经启用,但自从最近的 GRANT DEFAULT ROLE 语句在 TO 子句引用的该用户或 PUBLIC 以来,它必须未被调用。

如果没有为当前用户显式地定义缺省角色,但 PUBLIC 有缺省角色,则 DEFAULT_ROLE 返回 PUBLIC 的缺省角色。

如果用户没有缺省角色,或如果最近将缺省角色显式地授予了该用户,或随后通过 REVOKE DEFAULT ROLE 语句作为 PUBLIC 调用了,则 DEFAULT_ROLE 返回 NULL 值。如果用户尚未被单个地授予了缺省角色,但已将缺省角色授予了 PUBLIC,则 DEFAULT_ROLE 运算符返回此缺省角色的名称。然而,如果当前未为用户也未为 PUBLIC 定义缺省角色,则 DEFAULT_ROLE 返回 NULL。

SET ROLE 语句对 DEFAULT_ROLE 运算符不起作用,但如果 SET ROLE 已激活了某其他角色,或如果 SET ROLE 指定了 NULL 或 NONE 作为用户的当前角色,则用户没必要获得缺省角色的任何访问权限。

下一语句展示您可以如何使用 DEFAULT_ROLE 运算符:
select DEFAULT_ROLE from systables where tabid = 1;

DEFAULT_ROLE 不更改角色的标识符的字母大小写。

如果您指定 DEFAULT_ROLE 作为列的缺省值,则该列必须有 CHAR、VARCHAR、LVARCHAR、NCHAR 或 NVARCHAR 数据类型。由于角色的名称是授权标识符,因此如果列宽小于 32 字节,则可能发生截断。(要了解授权标识符的语法,请参阅 所有者名称。)