zoukankan      html  css  js  c++  java
  • oracle中update,insert,delete的高级用法

    一、对视图的更新。
    update,insert,delete除了可以作用于单表,还可以作用于视图、子查询,但是有种种限制。
    视图(子查询)的限制:
     
    1、没有集合操作符(并、差、交);
    2、没有DISTINCT操作符;
    3、没有聚合函数或分析函数;
    4、没有GROUP BY,ORDER BY,MODEL,CONNECT BY, 或者START WITH子句;
    5、SELECT中没有集合表达式;
    6、SELECT中没有子查询;
    7、没有WITH READ ONLY;
    8、可更新的关联视图。
    9、有INSTEAD OF触发器。
    键保留表:基础表的主键或者唯一索引在关联视图中也是唯一的,那么这个基础表就是键保留表。
     
    可更新的关联视图:
     
    1、没有WITH READ ONLY;
    2、一次只能更新一个根本的基本表;
    3、UPDATE规则:所有的更新列必须来自同一个键保留表,如果视图存在WITH CHECK OPTION,那么所有的关联字段和多数引用表的所有字段不能被更新;
    4、DELETE规则:可以更新一个键保留表的行,而且可以多次引用,但是多次引用又有WITH CHECK OPTION则不能更新,如果有多个键保留表,那么更新FROM子句的第一个表;
    5、INSERT规则:不能明显的或者暗含的引用一个非键保留表的字段,如果存在WITH CHECK OPTION则不能更新。
    6、如果视图中有内嵌视图,那么内嵌视图要可以merge到主视图中。
     
    二、INSERT的多表插入。
     
    同时无条件的插入多个表:
    insert all 
      into t1
      into t2
      ...
     values(...);
     
    同时插入符合条件的多个表,每一条记录会插入所有符合条件的表:
    insert all  www.2cto.com    
      when condition1 then
        into t1
      when condition2 then
        into t2
      ...
    [  else
        into tn]
      values(...);
     
    同时插入符合条件的一个表,每一条记录会插入到符合条件的第一个表:
    insert all  
      when condition1 then
        into t1  www.2cto.com  
      when condition2 then
        into t2
      ...
    [  else
        into tn]
      values(...);
     
    如果没有符合条件,有没有else子句,那么忽略该记录。
  • 相关阅读:
    BZOJ2111: [ZJOI2010]Perm 排列计数
    BZOJ1951: [Sdoi2010]古代猪文
    组合数取模
    BZOJ2226: [Spoj 5971] LCMSum
    BZOJ2820: YY的GCD
    数据结构讲题选做
    解题:HAOI 2015 按位或
    解题:SHOI 2006 有色图
    解题:洛谷 4986 逃离
    解题:HNOI 2013 Cards
  • 原文地址:https://www.cnblogs.com/JSD1207ZX/p/9386317.html
Copyright © 2011-2022 走看看