【发布时间】:2017-03-07 12:08:45
【问题描述】:
我有一个用户拥有一些表,我将其中三个表的权限授予另一个用户。现在我需要创建一个视图并将选择权限授予另一个用户,如下所示:
用户 A
GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE_A TO USER_B WITH GRANT OPTION;
GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE_B TO USER_B WITH GRANT OPTION;
GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE_C TO USER_B WITH GRANT OPTION;
用户 B
CREATE OR REPLACE VIEW V_XYZ AS SELECT * FROM TABLE_A, TABLE_B, TABLE_C;
GRANT ALL ON V_XYZ to USER_C;
这给出了以下错误:
ORA-01720: "grant option does not exist for '%s.%s'"
*Cause: A grant was being performed on a view or a view was being replaced
and the grant option was not present for an underlying object.
*Action: Obtain the grant option on all underlying objects of the view or
revoke existing grants on the view.
【问题讨论】:
-
错误信息看起来很清楚。你有什么问题?
-
我需要帮助。我将授予选项从 USER_A 授予 USER_B,现在在 USER_B 中,我无法将权限授予其他用户。也许这很简单,我没有看到。
-
按照错误消息中的说明进行操作。它从字面上告诉你该怎么做。
-
在我的情况下,问题是由于视图的 select 语句中的基础表没有分区。
标签: sql oracle view oracle11g grant