http://yangliehui1024.blog.163.com/blog/static/8734402920109174257575/

首先创建表students

SQL> create table students
  2  (
  3  sid number(6) not null unique,
  4  sname varchar2(20) ,
  5  sage varchar2(10)
  6  );
insert into students values(1,'yangliehui','21');
insert into students values(2,'zhangsan','22');

然后创建视图view_student
create view view_student as select * from students where sid='2';
再创建视图view_student_check
create view view_student_check as select * from students where sid=2 with check option;

比较view_student 和 view_student_check 的区别:
view_student视图可以执行 insert into view_student_sele values(3,'lisi','30');
view_student_check视图执行insert into view_student_sele values(3,'lisi','30');时显示“视图WITH CHECK OPTION where 子句违规”。
同理:update 、delete 操作也是如此,说明:视图加上with check option 子句后对该视图进行插入、修改、删除操作时,DBMS会自动加上条件(在本例中加的条件是:sid=2)。

http://www.cnblogs.com/iImax/archive/2012/09/10/2678982.html

insert into (<select clause> WITH CHECK OPTION) values (...)

例如:

SQL> insert into (select object_id,object_name,object_type from xxx where object_id<1000 WITH CHECK OPTION)
2 values(999,'testbyhao','testtype');

这样的语法看起来很特殊,其实是insert进subquery里的这张表里,只不过如果不满足subquery里的where条件的话,就不允许插入。

如果插入的列有不在subquery作为检查的where条件里,那么也会不允许插入。

如果不加WITH CHECK OPTION则在插入时不会检查。

这里注意,subquery其实是不会实际执行的。

例如:

SQL> insert into (select object_id,object_name,object_type from xxx where object_id<1000)
2 values(1001,'testbyhao','testtype');1 row created.SQL> insert into (select object_id,object_name,object_type from xxx where object_id<1000with check option)
2 values(1001,'testbyhao','testtype');
insert into (select object_id,object_name,object_type from xxx where object_id<1000 with check option)
*
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation

这里插入的列中没有object_id,也是不允许插入的:

SQL> insert into (select object_name,object_type from xxx where object_id<1000 with check option)
2 values('testbyhao','testtype');
insert into (select object_name,object_type from xxx where object_id<1000 with check option)
*
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation

为什么说subquery没有实际执行呢?看统计信息吧:

SQL> set autotrace trace exp stat
SQL> select object_id,object_name,object_type from xxx where object_id<1000;955 rows selected.
97 consistent getsSQL> insert into (select object_id,object_name,object_type from xxx where object_id<1000)
2 values(999,'testbyhao','testtype');1 row created.
1 consistent gets

oracle with check option 的作用相关推荐

  1. 【数据库】浅谈WITH CHECK OPTION的作用

    摘要:微信搜索[三桥君] 说明: 本文通过定义一个基本表,分析了在两种视图的情况下,使用WITH CHECK OPTION对SQL语句查询视图的影响,对比分析说明了WITH CHECK OPTION的 ...

  2. oracle check更改,Oracle With Check Option

    在本教程中,您将学习使用Oracle WITH CHECK OPTION子句来确保视图的一致性. Oracle WITH CHECK OPTION子句 WITH CHECK OPTION子句用于可更新 ...

  3. oracle select with read only,oracle创建视图的一些总结:包括with check option和with read only...

    oracle创建视图的一些总结: create [or replace][force | noforce] view [user.] viewName (column [,column2]...) a ...

  4. oracle 创建视图用 with check option 子句详解

    oracle的视图是一个很有用的工具,在很多应用中的应用到. 在oracle视图中,对于简单视图,oracle 允许进行 dml 操作 ,这就是说明如果我们在一个表上创建了一个视图,前提是没有限制对它 ...

  5. 关于Oracle Insert 语句的子查询 和 with check option的用法

    今日睇ocp教程  发现 insert语句还可以子查询例如: INSERT INTO (SELECT employee_id, last_name, email, hire_date, job_id, ...

  6. Oracle 12c In-Memory Option应用解析

    2019独角兽企业重金招聘Python工程师标准>>> Oracle 12c In-Memory Option应用解析 IMO是在Oracle数据库的SGA区中开辟一块列式缓存,将O ...

  7. oracle中check约束性别,关于Oracle Check类型约束的导入与启用

    今天有朋友问,Oracle的Check约束在indexfile中是否存在,导入后没有检查到. 我测试了一下,事实证明是可以的,Oracle的Check Constraints可以通过imp,使用ind ...

  8. 视图with check option语句详解

    此文是记录数据库平常的学习遇见的一些知识点 视图WITH CHECK OPTION子句 - 引用mysql官方文档的一句话:可以为可更新视图指定 WITH CHECK OPTION 子句, 以防止插入 ...

  9. 资源放送丨《Oracle聚簇因子的作用 - 2020云和恩墨大讲堂》PPT视频

    前段时间,墨天轮分享了直播<Oracle聚簇因子的作用 - 2020云和恩墨大讲堂>,在这里我们共享一下PPT和视频,供大家参考学习. 本分享从索引的结构和特点入题,引出聚簇因子的作用,并 ...

最新文章

  1. python中forward的参数_如何将关键字参数传递给preforward钩子使用的forward?
  2. samba3.2的安装全过程(tar方式)
  3. django 性能优化_优化Django管理员
  4. JQuery data API实现代码分析
  5. 修路方案(次小生成树)
  6. Python_骑士游历问题
  7. 最新遥感图像解译标准数据集--202105
  8. python正则表达式练习题
  9. C# 读取json文件与写json文件
  10. 设计模式-05.建造者模式与模板方法模式比较
  11. 普通固定电话机使用与原理简介
  12. 你知道的用户研究方法有哪些? 你认为应该如何进行定性和定量的研究?
  13. Photoshop CS 5 注册方法
  14. 粗糙集理论介绍(一)(rough set)
  15. 用纯CSS写一个左右滑动的开关按钮
  16. AR模型参数估计、Y-W方程、L-D算法原理部分
  17. 红旗linux 优盘安装教程,硬盘简单安装红旗Linux教程
  18. 学校招聘行政老师的计算机能力测试,【】计算机教师招聘试题(25页)-原创力文档...
  19. 用python做一个上位机串口通信_【教程】简易Python上位机之LED控制
  20. Python pip 安装、使用与升级

热门文章

  1. [Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波
  2. Matrix工作室第六届纳新AI组考核题(B卷)
  3. 2018第九届蓝桥杯C/C++ B国赛 —— 第六题:矩阵求和
  4. 【Java4】实例初始化,类初始化,/接口,多态,final/static,权限修饰符/native
  5. vue 中provide的用法_聊聊Vue中provide/inject的应用详解
  6. Qt -- 非常详细的pro文件的语法说明
  7. div弹窗如何设置不超出页面_js实现弹窗功能(以支付方式为例)
  8. Android安卓程序消息提示和按钮响应事件
  9. Keil5.26、Keil5.27、Keil5.30下载地址
  10. Zephyr应用笔记:mcuboot引导程序简单介绍