数据库中分别存在三个数据库用户:user1,user2
其中user1,user2的角色分别DBA
数据库表tables1属于user1
数据库表tables2属于user2
使用user1,user2也分别创建了view1,view2;view1,view2关联的基表分别是table1,table2table1,table2的SELECT权限都是grant select on tablename to username交叉赋与了user2,user1目前想用user1要创建一个视图view3,view3的基表是view1和view2
直接使用select语句(以下简称SQL文1)可以检索出数据,比如
select * from view1,view2
where ....但是将以上检索结果创建设置为视图时,系统提示权限不足CREATE OR REPLACE VIEW VIEW3 AS
select * from view1,view2
where ....
于是我将view2的检索权限显式的分配与user1:grant select on view2 to user1
结果SQL文1都不能执行了,还请各位指教。
谢谢
其中user1,user2的角色分别DBA
数据库表tables1属于user1
数据库表tables2属于user2
使用user1,user2也分别创建了view1,view2;view1,view2关联的基表分别是table1,table2table1,table2的SELECT权限都是grant select on tablename to username交叉赋与了user2,user1目前想用user1要创建一个视图view3,view3的基表是view1和view2
直接使用select语句(以下简称SQL文1)可以检索出数据,比如
select * from view1,view2
where ....但是将以上检索结果创建设置为视图时,系统提示权限不足CREATE OR REPLACE VIEW VIEW3 AS
select * from view1,view2
where ....
于是我将view2的检索权限显式的分配与user1:grant select on view2 to user1
结果SQL文1都不能执行了,还请各位指教。
谢谢
.....
显式的分配权限后,USER1居然不能检索VIEW2了
第一个方案:创建同义词
create public synonym view2 for user2.view2;
接着:
CREATE OR REPLACE VIEW VIEW3 AS
select * from view1,view2
where ....或者是第二个方案
CREATE OR REPLACE VIEW VIEW3 AS
select * from view1,user2.view2
where ....