我目前正在GRANT使用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
现在REVOKE Update ON T FROM C执行。因为没有指定约束,则REVOKE操作要么取消,否则将有一个废弃UPDATE的特权D,或同时删除的权限C和D。
REVOKE Update ON T FROM C
UPDATE
D
C
现在我的问题是:该REVOKE语句是否实际上已取消或同时删除C和D特权?或者换句话说,就是执行该revoke语句,无论之后的结果C,并D仍然有UPDATE特权或不?
提前致谢。
撤消对象特权
如果用户已将特权授予其他用户或角色,则数据库还将撤消那些其他用户或角色的特权。
正确的REVOKE语句是:
REVOKE object_priv [(column1, column2..)] ON [schema.]object FROM {user, | role, |PUBLIC} [CASCADE CONSTRAINTS] [FORCE]
RESTRICTOracle中没有。将RESTRICT在PostgreSQL中,MariaDB的,等存在
RESTRICT
但是我认为您的预期方法只是REVOKE Update ON T FROM C从A用户执行。之后,没有任何错误,并且用户C和D没有更新T的特权。