zoukankan      html  css  js  c++  java
  • [每日一题] OCP1z0-047 :2013-08-04 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就搞定了。 )


  • 相关阅读:
    死锁
    信号量
    实现临界区互斥的基本方法
    进程同步的基本概念:临界资源、同步和互斥
    操作系统典型调度算法
    [ 转]Collections.unmodifiableList方法的使用与场景
    【转】Android Support v4、v7、v13的区别和应用场景
    [转]finished with non-zero exit value 2
    [转]Git远程操作详解
    [转] git fetch与pull
  • 原文地址:https://www.cnblogs.com/pangblog/p/3238932.html
Copyright © 2011-2022 走看看