- 浏览: 772773 次
- 性别:
- 来自: 广州
文章分类
最新评论
我们来看下面的例子:
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'呀,所以就不行
发表评论
-
Oracle 10g 的clusterware 32位 下载地址
2013-04-19 23:03 1167Oracle 10g 的clusterware 32位 下载地 ... -
oracle 分析函数 RANK()
2013-04-11 00:05 1068RANK()既是一个聚合函数,也是一个分析函数 其具体的语法 ... -
oracle 分析函数
2013-04-09 23:25 1140分析函数是用于计算一组中多行的聚合值,与聚合函数的区别在于聚合 ... -
批量执行 bulk collect与forall用法
2013-04-08 23:49 1343BULK COLLECT 子句会批量检 ... -
pl/sql集合类型
2013-03-26 10:12 1547--集合类型 /* 单行单列的数据,使用标量变量 单行 ... -
oracle 行链接与行迁移
2013-03-16 01:06 1074表里的一行对于一个数据块太大的情况有二种(一行在一个数据块里放 ... -
oracle Health Monitor
2013-01-20 00:02 1576About Health Monitor Beginning ... -
oracle moving window size与 AWR retention period关系
2013-01-19 15:58 8459转自: http://tomszrp.itpub.net/po ... -
Oracle11.2新特性之INSERT提示IGNORE_ROW_ON_DUPKEY_INDEX
2013-01-12 00:20 2839insert提示IGNORE_ROW_ON_DUPKEY_IN ... -
oracle 11g新特性Flashback data archive
2013-01-09 22:52 30471. 什么是flashback data archive F ... -
RMAN List和report 命令
2012-12-25 00:07 2832LIST 命令 使用RMAN LIST 命令显示有关资料档案库 ... -
oracle ASM中ASM_POWER_LIMIT参数
2012-12-24 23:46 6377ASM_POWER_LIMIT 该初始化参数用于指定ASM例程 ... -
oracle I/O 从属进程
2012-12-24 23:24 1375I/O 从属进程 I/O从 ... -
easy connect 之 ORA-12154: TNS: 无法解析指定的连接标识符
2012-12-19 23:43 5594用easy connect连接出现“tns无法解析指定的连接标 ... -
Flashback Database --闪回数据库
2012-12-19 23:38 1340Flashback 技术是以Undo segment中的内容为 ... -
Oracle 11g新特性:Automatic Diagnostic Repository
2012-12-19 22:35 1353Oracle Database 11g的FDI(Fault D ... -
RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系
2012-12-19 22:09 2599RMAN配置中通道(CHANNEL)相 ... -
oracle 空间RESUMABLE
2012-12-14 22:05 3012空间RESUMABLE操作 转 Oracle从9i开始 ... -
flashback transaction闪回事务查询
2012-11-26 22:00 1469闪回事务查询有别于闪回查询的特点有以下3个: (1) ... -
pl/sql连不上oracle数据库
2012-11-21 22:56 3714pl/sql 9.2版本连不上oracle数据库 当系统安装 ...
相关推荐
ORACLE 视图的 with check option
oracle 创建视图为读
如何创建视图,oracle数据库课件
oracle 下WITH CHECK OPTION用法
NOFORCE :如果基表不存在,无法创建视图,该项是默认选项(只有基表都存在ORACLE才会创建该视图)。 alias:为视图产生的列定义的别名; subquery :一条完整的SELECT语句,可以在该语句中定义别名; WITH CHECK ...
oracle 创建视图的语句写法。教你如何写创建视图的语句。
Oracle_View视图创建在oracle数据库中已建立两张表rt_issuesect和roadstate,表结构如下: 高架状态表结构rt_issuesect
Oracle物化视图创建和使用,设置物化视图的自动刷新时间
总结: 可传参视图主要是利用oracle存储过程来作为参数传递的介质,相当于定义了一个全局变量,在查询的时候设置参数,在视图中获取参数。
Oracle过程中创建视图
Oracle过程中创建视图实例
oracle作业视图和同义词oracle作业视图和同义词oracle作业视图和同义词oracle作业视图和同义词oracle作业视图和同义词oracle作业视图和同义词oracle作业视图和同义词oracle作业视图和同义词oracle作业视图和同义词
oracle实现带参数视图,里面有例子,很好的一个东西。
oracle表字段或是视图字段添加备注方法
创建视图和方法
17oracle的视图 PPT 17oracle的视图 PPT
oracle动态视图从入门到精通详细版,适合对oracle视图有一定认识的读者,也适合需要oracle dba读者
东华大学oracle上机实验二答案,需要的可以参考下。
里面详细讲述物化视图的种种创建,物化日志的结构,group by 语句创建物化视图的处理