首页 文章

撤消Oracle中的权限

提问于
浏览
3

我目前正在使用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 权限,或删除 CD 的权限 .

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

提前致谢 .

1 回答

  • 3

    Revoke object privilege

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


    正确的REVOKE语句是:

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

    Oracle中没有 RESTRICT . RESTRICT 存在于PostgresSQL,MariaDB等 .

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

相关问题