OCP1z0-047 : INSERT --- WITH CHECK OPTION

这题是考:insertWITH CHECK OPTION的用法

insert into (<select clause> WITH CHECKOPTION) values (...)

这样的语法看起来有点特点,其实insert是插入到查询里的这张表里,只不过如果不满足子查询里的where条件的话,就不允许插入。如果插入的列有不在子查询作为检查的where条件里,那么也会不允许插入。如果不加WITH CHECK OPTION则在插入时不会检查。

OK!我们根据题意先来做测试:

SQL> INSERT INTO (SELECT order_id,order_date,customer_id FROM ORDERS
  2  WHERE order_total=1000
  3  WITH CHECK OPTION) VALUES(13,SYSDATE,101);
INSERT INTO (SELECT order_id,order_date,customer_id FROM ORDERS
                                                         *
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation

这里SELECT子查询中没有order_total列,是不允许插入的。

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

SQL> INSERT INTO (SELECT order_id,order_date,customer_id FROM ORDERS
  2  WHERE order_total=1000) VALUES(130,SYSDATE,101);  

1 row created.

正确的应该改成(在select中加入一列order_total):

SQL> INSERT INTO (SELECT order_id,order_date,customer_id,order_total FROM ORDERS
  2  WHERE order_total=1000
  3  WITH CHECK OPTION) VALUES(13,SYSDATE,101,1000);  

1 row created.

答案C是正确的。(答案D是说 在SELECT中应该要所有的列,这显然不对,在上个例子上加了一列order_total就搞定了。 )

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索insert
, select
, option
, check
with
mysql ocp 1z0 883、1z0 047、ocp 047 解析、ocp047和051的区别、ocp 047,以便于您获取更多的相关知识。

时间: 2024-08-06 23:30:37

OCP1z0-047 : INSERT --- WITH CHECK OPTION的相关文章

oracle 下WITH CHECK OPTION用法_Oracle应用

如果视图定义包括条件(譬如 WHERE 子句)并且其意图是确保任何引用该视图的 INSERT 或 UPDATE 语句都应用 WHERE 子句,则必须使用 WITH CHECK OPTION 定义该视图.这个选项可以确保数据库中正在修改的数据的完整性.如果在 INSERT 或 UPDATE 操作期间违反了条件,则返回 SQL 错误.  下面是一个使用了 WITH CHECK OPTION 的视图定义的示例.要确保总是检查条件,WITH CHECK OPTION 是必需的.在这种情况下,我们希望确保

not null constraint和check constriant的问题及分析

oracle的constraint有6类,如下. 但是基于列的constraint主要有 type 为C,P,R,U 接触比较多的. 今天来和大家讨论check constraint和not null constraint,它们的constraint type都为C,但是实际应用中还是有很大的差别. Type Code Type Description Acts On Level C Check on a table Column O Read Only on a view Object P P

一天学会PostgreSQL应用开发与管理 - 5 数据定义

背景 本章大纲 1. 数据类型 2. 数据操作 3. 表管理 4. 视图 5. 约束 6. RLS(行安全策略) 第三章:数据定义 1. 数据类型 https://www.postgresql.org/docs/9.6/static/datatype.html 1.数值 Name Storage Size Description Range smallint 2 bytes small-range integer -32768 to +32767 integer 4 bytes typical

SQL MSSQL 常用代码大全

/*********************************************************/ function:SQL MSSQL TECHNOLOGY ARTICLE file :SQL-MSSQL.TXT author :chinayaosir QQ:44633197 Tools :MSSQL QUERY ANALYSIS date :4/01/2010 blog :http://blog.csdn.net/chinayaosir note :禁止其它网站转载此文章

通过视图修改数据时所应掌握的基本准则

假如不使用INSTEAD OF触发器或可更新分区视图而是通过视图来修改数据,那么再修改之前,请考虑下列准则: ◆如果在视图定义中使用了 WITH CHECK OPTION 子句,则所有在视图上执行的数据修改语句都必须符合定义视图的 SELECT 语句中所设定的条件.如果使用了 WITH CHECK OPTION 子句,修改行时需注意不让它们在修改完成后从视图中消失.任何可能导致行消失的修改都会被取消,并显示错误信息. ◆SQL Server 必须能够明确地解析对视图所引用基表中的特定行所做的修改

SQL Server 2005 中的批编译、重新编译和计划缓存问题(2)

查询计划缓存及各种 SET 选项(与 showplan 相关及其他) 各种 SET 选项--多数与 showplan 相关--以多种复杂的方式影响着查询计划和执行上下文的编译.缓存和重用.下表汇总了相关的详细信息. 应按如下顺序阅读该表中的内容.批处理通过表中第一列所指定的特定模式提交给 SQL Server.已提交的批处理的计划缓存中可能存在.也可能不存在已缓存的查询计划.第 2 列和第 3 列描述了存在已缓存的查询计划时的情况:第 4 列和第 5 列说明了不存在已缓存的查询计划时的情况.在每

面试时最经常被问到的问题(Frenquently asked interview questions)之 Databases 篇

问题   Databases Questions & Answers 1.      What are two methods of retrieving SQL?Answer: 2.      What cursor type do you use to retrieve multiple recordsets?Answer: 3.      What action do you have to perform before retrieving data from the next resu

SQL 2000中的触发器使用

触发器 触发器是数据库应用中的重用工具,它的应用很广泛,这几天写一个化学数据统计方面的软件,需要根据采样,自动计算方差,在这里,我使用了触发器.下面我摘录了SQL Server官方教程中的一段关于触发器的文字,确实有用的一点文字描述.__________________________________________________________________ 可以定义一个无论何时用INSERT语句向表中插入数据时都会执行的触发器. 当触发INSERT触发器时,新的数据行就会被插入到触发器表

某人的oracle9i学习笔记,与大家分享

oracle|笔记 ######### 创建数据库----look $ORACLE_HOME/rdbms/admin/buildall.sql ############# create database db01 maxlogfiles 10 maxdatafiles 1024 maxinstances 2 logfile GROUP 1 ('/u01/oradata/db01/log_01_db01.rdo') SIZE 15M, GROUP 2 ('/u01/oradata/db01/log