Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6944903
  • 博文数量: 701
  • 博客积分: 10821
  • 博客等级: 上将
  • 技术积分: 12021
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-02 10:41
个人简介

中科院架构师,专注企业数字化各个方面,MES/ERP/CRM/OA、物联网、传感器、大数据、ML、AI、云计算openstack、Linux、SpringCloud。

文章分类

全部博文(701)

分类: Oracle

2006-08-30 13:44:07

在metalink note 116540.1 指出,如果在create or replace view后,该视图对应的权限丢失,那么将是一个bug。

首先:问这样一个问题,用户 a 创建了一个视图v,授予用户b:
grant select on v to b,那么,用户b可以查看该视图。这没有什么疑问。

但是,现在如果a用户发出create or replace view v as select *,之后,用户b能看select改视图吗?

答案是肯定的:

以用户a登录
SQL> conn
请输入用户名: a/a
已连接。
SQL> create or replace view v_cy as select * from t2;

视图已创建。

SQL> grant select on v_cy to wwf;

授权成功。

以用户b登录:
SQL> conn
请输入用户名: b/b
已连接。

SQL> select * from a.v_cy;

A B
---------- ----------
1 1

这时a用户发出如下命令:
SQL> create or replace view v_cy as select * from t2;

视图已创建。

b用户仍然可以查询v_cy:
SQL> select * from a.v_cy;

A B
---------- ----------
1 1

可以,create or replace绝对不是drop然后再create那么简单

上面的视图,如果你先drop,再create,用户b是绝对查看不到的,将会出现如下提示:
ORA-00942: 表或视图不存在

阅读(10198) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~