当任何下列依赖存在时,RESTRICT 关键字导致 REVOKE 语句失败:
- 视图依赖于您正在尝试取消的 Select 权限。
- 外键约束依赖于您尝试取消的 References 权限。
- 您尝试从一用户取消权限,该用户后来将此权限授予了另一用户或角色。
如果 REVOKE 指定有将该权限授予其他用户的权限,但尚未使用那项权利的用户,则 REVOKE 不会失败。例如,假设当用户
clara 将对
customer 表的 Select 权限授予用户
ted 时,它指定 WITH GRANT OPTION。进一步假设用户
ted,接着将对
customer 表的 Select 权限授予用户
tania。
clara 发出了的下列语句不起作用,因为
ted 已使用了它的授权来授予 Select 权限:
REVOKE SELECT ON customer FROM ted RESTRICT;
相反,如果用户
ted 未将 Select 权限授予
tania 或任何其他用户,则同样的 REVOKE 语句成功。
即使
ted 确将 Select 权限授予另一用户,下列语句的每一条均成功:
REVOKE SELECT ON customer FROM ted CASCADE;
REVOKE SELECT ON customer FROM ted;