在视图上授予选择不起作用

时间:2012-11-29 22:59:04

标签: oracle

我的oracle数据库有一个用户(让我们说SWEET)。在SWEET模式中,我有一个名为AUTO_PARTS的表。

现在,我创建了一个新用户(SWEET_CV)并在SWEET的AUTO_PARTS表上创建了一个视图。

CREATE SCHEMA AUTHORIZATION SWEET_CV
   CREATE VIEW SWEET_CV.new_autoparts_view 
      AS SELECT * FROM SWIFT.AUTO_PARTS WHERE PRODUCTNAME = 'ABC'
   GRANT select ON SWEET_CV.new_autoparts_view TO SWEET;

最后一个Grant语句给出了错误ORA-01720:'SWEET.AUTO_PARTS'不存在grant选项。所以我做了以下。

From SWEET account:
GRANT SELECT ON AUTO_PARTS TO SWEET_CV *WITH GRANT OPTION*
And then From SWEET_CV account:
GRANT SELECT ON SWEET_CV.new_autoparts_view TO SWEET;

这两笔赠款都成功了,我承诺了。

现在,当我登录SWEET并查询'select * from SWEET_CV.new_autoparts_view'时,会返回行。但是当我查询'select * from new_autoparts_view'时,表示表或视图不存在。你能解释为什么即使在我做GRANT之后它也不存在。

我想在我的SWEET中访问新模式的视图,而不必将其称为newschema(dot)viewname

提前致谢

1 个答案:

答案 0 :(得分:4)

  

我想在我的SWEET中访问新模式的视图,而不必将其称为

您需要在SWEET架构中创建引用该视图的同义词:

create synonym sweet.new_autoparts_view for sweet_cv.new_autoparts_view;