oracle 创建视图 with check option
来源:互联网 发布:golang mgo 查询 编辑:程序博客网 时间:2024/06/10 03:58
我们来看下面的例子:
create or replace view testview
as
select empno,ename from emp where ename like ‘M%’
with check option;
这里我们创建了一个视图,并使用了with check option来限制了视图。 然后我们来看一下视图包含的结果:
select * from testview得到:
EMPNO ENAME
———- ———–
7654 MARTIN
7934 MILLER
这两条记录
然后我们在试图将其中一条更新:
update testview
set ename = ‘Mike’
where empno = 7654;
OK,这条更新语句可以执行,并没有什么问题,但是当我们执行另一条更新时:
update testview
set ename = ‘Robin’
where empno = ‘7654′;
就会出现ORA-01402: 视图 WITH CHECK OPTIDN 违反 where 子句的错误,这是因为什么呢?
这是因为前面我们在创建视图时指定了witch check option关键字,这也就是说,更新后的每一条数据仍然要满足创建视图时指定的where条件,所以我们这里发生了错误ORA-01402。
但是需要说明的时 ,虽然指定了with check option,我们还是可以删除视图中的数据。例如上例中,我们可以使用
delete from test where where empno = 7654
我创建一个视图:
create view IS_student
as
select sno,sname,sage
from student
where sname='IS'
with check option;
加上了with check option;后,不能执行插入操作:
insert into is_student
values('95100','李娜',12)
什么原因?不加上with check option则可以!
with check option可以这么解释:通过视图进行的修改,必须也能通过该视图看到修改后的结果。比如你insert,那么加的这条记录在刷新视图后必须可以看到;如果修改,修改完的结果也必须能通过该视图看到;如果删除,当然只能删除视图里有显示的记录。
--->而你只是查询出sdept='is'的纪录,你插入的根本不符合sname='is'呀,所以就不行
create or replace view testview
as
select empno,ename from emp where ename like ‘M%’
with check option;
这里我们创建了一个视图,并使用了with check option来限制了视图。 然后我们来看一下视图包含的结果:
select * from testview得到:
EMPNO ENAME
———- ———–
7654 MARTIN
7934 MILLER
这两条记录
然后我们在试图将其中一条更新:
update testview
set ename = ‘Mike’
where empno = 7654;
OK,这条更新语句可以执行,并没有什么问题,但是当我们执行另一条更新时:
update testview
set ename = ‘Robin’
where empno = ‘7654′;
就会出现ORA-01402: 视图 WITH CHECK OPTIDN 违反 where 子句的错误,这是因为什么呢?
这是因为前面我们在创建视图时指定了witch check option关键字,这也就是说,更新后的每一条数据仍然要满足创建视图时指定的where条件,所以我们这里发生了错误ORA-01402。
但是需要说明的时 ,虽然指定了with check option,我们还是可以删除视图中的数据。例如上例中,我们可以使用
delete from test where where empno = 7654
我创建一个视图:
create view IS_student
as
select sno,sname,sage
from student
where sname='IS'
with check option;
加上了with check option;后,不能执行插入操作:
insert into is_student
values('95100','李娜',12)
什么原因?不加上with check option则可以!
with check option可以这么解释:通过视图进行的修改,必须也能通过该视图看到修改后的结果。比如你insert,那么加的这条记录在刷新视图后必须可以看到;如果修改,修改完的结果也必须能通过该视图看到;如果删除,当然只能删除视图里有显示的记录。
--->而你只是查询出sdept='is'的纪录,你插入的根本不符合sname='is'呀,所以就不行
0 0
- oracle 创建视图 with check option
- oracle 创建视图用 with check option 子句详解
- oracle 创建视图用 with check option 子句详解
- 创建视图时with check option问题
- 创建视图时with check option问题
- 创建视图的with check option选项。
- 创建视图时with check option问题
- ORACLE 视图的 with check option
- 关于Oracle视图with check option
- ORACLE 视图的 with check option
- 视图 WITH CHECK OPTION
- 对with check option创建的视图进行数据插入
- -------视图with check option选项-------------------
- 视图中的with check option
- 视图中with check option的作用
- 视图with check option选项详解
- ORACLE WITH CHECK OPTION子句详解
- oracle 下WITH CHECK OPTION用法
- oracle 11g database control 证书错误
- MT7620 修改 默认 ip
- pl/sql连不上oracle数据库
- Java arraylist线程不安全 vectory 线程安全
- flashback transaction闪回事务查询
- oracle 创建视图 with check option
- css样式+属性兼容
- Python-OpenCV 处理图像(七):图像灰度化处理
- oracle 空间RESUMABLE
- Tomcat与Solr整合
- RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系
- Oracle 11g新特性:Automatic Diagnostic Repository
- 消失队列(MQ)介绍
- [从头学数学] 第26节 数学广角 搭配(一)