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

中科院云平台架构师,专注于数字化、智能化,技术方向:云、Linux内核、AI、MES/ERP/CRM/OA、物联网、传感器、大数据、ML、微服务。

文章分类

全部博文(703)

分类: 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: 表或视图不存在

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