当前位置: 首页 > 面试题库 >

撤消Oracle中的特权

万俟玉书
2023-03-14
问题内容

我目前正在GRANT使用Oracle Database Express Edition
11g处理一些选项。考虑下面的小代码示例,其中一些用户向其他用户授予某些特权:

-- 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

现在我的问题是:该REVOKE语句是否实际上已取消或同时删除CD特权?或者换句话说,就是执行该revoke语句,无论之后的结果C,并D仍然有UPDATE特权或不?

提前致谢。


问题答案:

撤消对象特权

如果用户已将特权授予其他用户或角色,则数据库还将撤消那些其他用户或角色的特权。

正确的REVOKE语句是:

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

RESTRICTOracle中没有。将RESTRICT在PostgreSQL中,MariaDB的,等存在

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



 类似资料:
  • Revert 命令可以撤消之前做过的某个提交。 练习 1,先查看一下项目的提交历史: → git log --oneline fb11f83 让 README.md 标题的首字母大写 0fd9dac 让标题微笑 7086650 添加 .gitignore b5773ad 设置相关资源文档标题 23f3c2b 添加相关资源文档 a454700 设置说明文档的标题 39975b3 初始化 “添加 .

  • Git提供了多种修复你开发过程中的错误的方法. 方法的选择取决于你的情况: 包含有错误的文件是否提交了(commited); 如果你把它已经提交了, 那么你是否把有错误的提交已与其它人共享这也很重要. 修复未提交文件中的错误(重置) 如果你现在的工作目录(work tree)里搞的一团乱麻, 但是你现在还没有把它们提交; 你可以通过下面的命令, 让工作目录回到上次提交时的状态(last commi

  • 问题内容: 假设我有以下两个变量: 我怎样才能获得的价值是价值?也就是说,如何展开unicode格式,但保留十六进制的值? 如果我这样做: 那是不对的… 救命! 问题答案: U + 0000和U + 00FF之间的代码点以ISO 8859-1或Latin 1编码映射到相同的字节值。

  • 在任何一个阶段,你都有可能想要撤消某些操作。 这里,我们将会学习几个撤消你所做修改的基本工具。 注意,有些撤消操作是不可逆的。 这是在使用 Git 的过程中,会因为操作失误而导致之前的工作丢失的少有的几个地方之一。 有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交: $ git commit --amend 这个

  • 很管用。然而,我也需要执行一些撤消操作或确认。做这件事最好的方法是什么? 第一个问题是如何插入另一个视图代替删除与确认对话框?如果用户选择撤消删除,如何恢复被刷的项目?