设置缺省的角色

DBA 或数据库的所有者可发出 GRANT DEFAULT ROLE 语句来对指定的用户列表或对 PUBLIC 指定一现有的角色为缺省的角色。不像非缺省的角色那样,缺省的角色不要求 SET ROLE 语句来启用它。当为用户分配缺省的角色时,将一对数据库的隐式的连接授予该用户。

在下一示例中的三个语句中的每一个分别对角色执行下列操作之一:

EXEC SQL CREATE ROLE 'Engineer';
      EXEC SQL GRANT SELECT ON locomotives TO 'Engineer';
      EXEC SQL GRANT DEFAULT ROLE 'Engineer' TO jgould;
如果 jgould 随后使用 SET ROLE 语句来启用一些其他角色,则通过执行下列语句,jgouldEngineer 替代那个角色作为缺省的角色:
SET ROLE DEFAULT;

如果您没有缺省的角色,则 SET ROLE DEFAULT 使得 NONE 成为您的缺省角色,仅留下已经显式地授予了您的 username 或 PUBLIC 的那些权限。在 GRANT DEFAULT ROLE 将您的缺省角色更改为新的缺省角色之后,执行 SET ROLE DEFAULT 恢复您最近被授予的缺省角色,即使当您连接到了数据库时此角色不是您的缺省角色。

如果未授予 PUBLIC 一个缺省角色,但授予不同的角色作为一单个用户的缺省角色,则单独授予的缺省角色优先,如果那个用户发出 SET ROLE DEFAULT 或连接到数据库的话。