我目前正在使用Oracle Database Express Edition 11g处理一些 GRANT
选项 . 请考虑以下小代码示例,其中一些用户向其他用户授予某些权限:
-- User A
GRANT Select, Insert, Update, Delete ON T TO B,C WITH GRANT OPTION ;
-- User B
GRANT Select ON T TO C WITH GRANT OPTION ;
GRANT Insert ON T TO C ;
-- USer C
GRANT Select, Insert, Update ON T TO D ;
用户A是表T的创建者,并执行以下 REVOKE
操作 .
现在执行 REVOKE Update ON T FROM C
. 由于未指定约束,因此 REVOKE
操作应取消,否则在 D
处将放弃 UPDATE
权限,或删除 C
和 D
的权限 .
现在我的问题是: REVOKE
语句是否实际取消或删除 C
和 D
权限?或者换句话说,执行该撤销语句之后的结果是 C
和 D
是否仍具有 UPDATE
权限?
提前致谢 .
1 回答
Revoke object privilege
如果用户已将权限授予其他用户或角色,则数据库还会撤消其他用户或角色的权限 .
正确的REVOKE语句是:
Oracle中没有
RESTRICT
.RESTRICT
存在于PostgresSQL,MariaDB等 .但是我认为您的预期方式只是从用户执行
REVOKE Update ON T FROM C
. 之后没有任何错误,用户C和D没有权限更新T.