当您将自主访问权限授予其他用户、角色或 PUBLIC 时,在缺省情况下,您是可取消那些权限的用户。AS grantor 子句使您建立另一用户作为您正在授予权限的源。
当您使用 AS grantor 子句时, AS grantor 子句中提供的登录名取代相应系统目录表中您的登录名。如果您有对该数据库的 DBA 权限,则您可使用此子句。
在您使用此子句之后,仅指定的 grantor 可取消当前 GRANT 操作产生的影响。即使 DBA 也不可取消权限,除非那个 DBA 作为授予了该权限的用户被罗列在系统目录表中。
REVOKE ALL ON items FROM PUBLIC; GRANT ALL ON items TO tom WITH GRANT OPTION;
GRANT SELECT, UPDATE ON items TO jim AS tom;
REVOKE ALL ON items FROM tom;
REVOKE SELECT, UPDATE ON items FROM jim; 580: Cannot revoke permission.
因为数据库服务器记录显示原始的授权者为用户 tom,且您不可取消该权限,所以您收到错误。虽然您是 DBA,但您不可取消另一用户授予了的权限。
在 GRANT DEFAULT ROLE 语句内,AS grantor 子句无效。
要了解 AS grantor 子句处需要的上下文,而不是可选项,请参阅 将 Execute 权限授予 PUBLIC。