授权和撤销的生效时间
根据授予或撤销的内容,授予或撤销在不同时间生效:
向任何内容用户和角色的系统特权、对象特权授予和撤销将立即生效。
仅当当前用户会话使用SET ROLE语句后,重新启用角色时,或者在授予或撤消后创建新的用户会话时,向任何用户、其他角色授予和撤销角色的所有授权和撤销才会生效。
您可以通过查询 SESSION_USER和CURRENT_USER查看当前启用的角色。
SET ROLE 语句
在用户会话期间,用户或应用程序可以使用SET ROLE语句任意次数来更改当前为会话启用的角色。必须已向用户授予在语句中命名的角色。
例如,设置当前会话角色为paul:
SELECT SESSION_USER, CURRENT_USER;
session_user | current_user
--------------+--------------
peter | peter
SET ROLE 'paul';
SELECT SESSION_USER, CURRENT_USER;
session_user | current_user
--------------+--------------
peter | paul
例如,使用 SET ROLE 禁用所有角色:
SET ROLE NONE;