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

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/9751355



这题是考: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就搞定了。 )


QQ:252803295

学习交流QQ群:
DSI&Core Search  Ⅰ 群:127149411(技术:已满)
DSI&Core Search  Ⅱ 群:177089463(技术:未满)
DSI&Core Search  Ⅲ 群:284596437(技术:未满)
DSI&Core Search  Ⅳ 群:192136702(技术:未满)
DSI&Core Search  Ⅴ 群:285030382(闲聊:未满)



MAIL:oracledba_cn@hotmail.com

BLOG: http://blog.csdn.net/guoyjoe

WEIBO:http://weibo.com/guoyJoe0218

ITPUB: http://www.itpub.net/space-uid-28460966.html

OCM:   http://education.oracle.com/education/otn/YGuo.HTM



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值