insert into (<subquery> WITH CHECK OPTION) values (...)

语法看起来很特殊,其实是insert进subquery的这张表里:

1. 只有插入的值在subquery列表中,且满足where条件时才能插入成功。

2. 如果不满足subquery里的where条件的话,就不允许插入。

3. 如果插入的列不在subquery里,那么也会不允许插入。

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

5. subquery其实是不会实际执行的。

//满足条件,成功插入

SQL> insert into (select deptno,dname from dept where deptno>50 with check option) values (90,'Tough');
已创建 1 行。

//deptno=45不满足where子句条件

SQL> insert into (select deptno,dname from dept where deptno>50 with check option) values (45,'Tough');

insert into (select deptno,dname from dept where deptno>50 with check option) values (45,'Tough')
                                      *
第 1 行出现错误:
ORA-01402: 视图 WITH CHECK OPTIDN where 子句违规

//插入的值不在subquery列表中,多值或少值都不行

SQL> insert into (select deptno,dname from dept where deptno>50 with check option) values (90,'Tough','TH');

insert into (select deptno,dname from dept where deptno>50 with check option) values (90,'Tough','TH')
            *
第 1 行出现错误:
ORA-00913: 值过多

SQL> insert into (select deptno,dname from dept where deptno>50 with check option) values (90);

insert into (select deptno,dname from dept where deptno>50 with check option) values (90)
            *
第 1 行出现错误:
ORA-00947: 没有足够的值

//不加WITH CHECK OPTION则在插入时不会检查

SQL> insert into (select deptno,dname from dept where deptno>50) values (45,'Tough');
已创建 1 行。

//subquery其实是不会实际执行的。从执行计划可以看出来

SQL> insert into (select deptno,dname from dept where deptno>50 with check option) values (91,'Tough');
已创建 1 行。

执行计划
----------------------------------------------------------

-------------------------------------------------------------------------
| Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------
|   0 | INSERT STATEMENT |      |     1 |    20 |     1   (0)| 00:00:01 |
-------------------------------------------------------------------------


insert into (select...WITH CHECK OPTION) values(...)的更多相关文章

  1. [每日一题] OCP1z0-047 :2013-08-04 INSERT --- WITH CHECK OPTION

    这题是考:insertWITH CHECK OPTION的用法 insert into (<select clause> WITH CHECKOPTION) values (...) 这样 ...

  2. PLSQL_基础系列05_视图控制WITH CHECK OPTION(案例)

    2014-12-09 Created By BaoXinjian

  3. with check option

    通过有with check option选项的视图操作基表(只是面对单表,对连接多表的视图正在寻找答案),有以下结论:首先视图只操作它可以查询出来的数据,对于它查询不出的数据,即使基表有,也不可以通过 ...

  4. ORACLE 视图的 with check option

    ORACLE 视图的 with check option 我们来看下面的例子: create or replace view testview as select empno,ename from e ...

  5. view WITH CHECK OPTION where-clause violation(查看与检查选项where-子句违反)

    创建视图的语句是设置了 WITH CHECK OPTION 这个条件; 创建视图时,sql语句是这样写的: CREATE  OR  REPLACE  VIEW  RZ_TST_VIEW AS WHER ...

  6. with check option(视图 )

    建立视图的时候使用WITH CHECK OPTION 与不使用的区别 WITH CHECK OPTION insert update  delete 使用with check option 保证ins ...

  7. SQL中的with check option(转)

    student表: 95001 李勇 男 20 CS 95002 刘晨 女 21 IS 95003 王敏 女 18 MA 95004 张力 男 19 IS 建立视图IS_STUDENT显示“IS”系所 ...

  8. 批量 1 insert into select 2 sqldataadapter.update 3 SELECT INTO FROM (要求目标表不存在) 4 AddRange(ef) 5 MySqlBulkLoader.Load() 6 BatchInsert 7 insert bulk

     insert into a(col1,col2) select top 1 '1','2' from a union select top 1 '3','4' from a    SELECT IN ...

  9. SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

    Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少.但我 ...

随机推荐

  1. 关于直接创建视图UITableViewController显示(初学)

    今天渣渣想直接创建一个UITableView视图作为根视图来用结果发现有警告,才明白TableView和view是不能直接作为根视图的,需要放在ViewController上.做个笔记详细了解下. 参 ...

  2. [转]每次打开IE9就会跳出管理加载项的窗口

    当您打开IE9就跳出管理加载项的窗口,这一般是由于使用优化软件对系统进行优化清理后导致了注册表的错误.上次我们就为大家介绍了关于IE9启动后自动弹出管理加载项窗口的问题,这两个问题非常类似,引发问题的 ...

  3. hdu 1195 广度搜索

    这题我们可以用优先队列,每次弹出队列中操作次数最少的一个,那么当找到匹配数时,该值一定是最优的.需要注意的时,加个vi[]数组,判读当前数是否已经存在于队列中.我做的很烦啊~~~ #include&l ...

  4. java-MySQL存储过程

    import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import ...

  5. 模板引擎逻辑语句处理之对单层for循环的处理

    先上代码 private function moldforExt(){//模板单层For循环处理 $SQL=$this->sql_obj; $URL=$this->url_obj; req ...

  6. SNMP监控一些常用OID的总结

    做网络监控的人对SNMP的协议肯定够很熟悉,下面罗列出一些常见的OID说明,方便大家省去查阅相关资料的麻烦. 系统参数(1.3.6.1.2.1.1) OID 描述 备注 请求方式 .1.3.6.1.2 ...

  7. winform 上传文件

    using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO ...

  8. Javascript之响应式相册

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  9. CSS之Win8界面摸拟

    开门见山,先把测试Result放上: <head> <meta charset="UTF-8"> <meta http-equiv="X-U ...

  10. 【Android学习】自定义Android样式checkbox

    下面简单介绍下在Androdi中如何更改Checkbox的背景图片,可以自定义样式 1.首先res/drawable中定义编写如下样式的XML,命名为:checkbox_style: <?xml ...