2016-10-25 3 views
0

У меня есть пользователь с некоторыми таблицами, и я предоставил привилегии трем из них другому пользователю. Теперь мне нужно, чтобы создать представление и предоставить выбор другому пользователю, например:ORA-01720: Невозможно предоставить привилегии на вид

Пользователь 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; 

Это дает ошибку folowing:

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. 
+0

Сообщение об ошибке кажется очень четким. Какой у Вас вопрос? – RBarryYoung

+0

Мне нужна помощь. Я дал вариант гранта от USER_A к USER_B и теперь в USER_B. Я не могу предоставлять привилегии другому пользователю. Может быть, это что-то легкое, что я не смотрю. –

+0

Следуйте инструкциям в сообщении об ошибке. Это буквально говорит вам, что делать. – RBarryYoung

ответ

0

Вы запрашиваете ВСЕ привилегии, предоставляемые USER_C, но только 4 предоставлены вам в базовых таблицах. Попробуйте либо предоставить ВСЕ ПРИВИЛЕГИИ от A до B, либо ограничить грант от B до C на SELECT, UPDATE, INSERT, DELETE.

0

Попробуйте дать:

GRANT select ON V_XYZ to USER_C;