撤消Oracle中的权限

时间:2015-12-15 12:10:39

标签: sql oracle

我目前正在使用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操作应取消,否则UPDATE会有被遗弃的D权限,或删除CD的权限{1}}。

现在我的问题是:REVOKE语句是否实际取消或删除了CD权限?或者换句话说,执行撤销声明后,CD仍然具有UPDATE权限的结果是什么?

提前致谢。

1 个答案:

答案 0 :(得分:3)

撤销对象权限

如果用户已将权限授予其他用户或角色,则数据库也会撤消其他用户或角色的权限。

正确的REVOKE语句是:

  REVOKE object_priv [(column1, column2..)] ON [schema.]object 
         FROM {user, | role, |PUBLIC} [CASCADE CONSTRAINTS] [FORCE] 

Oracle中没有RESTRICTRESTRICT存在于PostgresSQL,MariaDB等中。

但是我认为您的预期方式只是从用户执行REVOKE Update ON T FROM C。 之后没有任何错误,用户C和D没有权限更新T.

相关问题