首页 电脑 电脑学堂 查看内容

oracle中update,insert,delete的高级用法

2012-4-16 14:43 626 0

摘要: 一、对视图的更新。 update,insert,delete除了可以作用于单表,还可以作用于视图、子查询,但是有种种限制。   www.2cto.com   视图(子查询)的...
关键词: nbsp 视图 更新 into 子句 insert 一个 条件 如果 图中

一、对视图的更新。 update,insert,delete除了可以作用于单表,还可以作用于视图、子查询,但是有种种限制。   www.2cto.com   视图(子查询)的限制:  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触发器。   www.2cto.com   键保留表:基础表的主键或者唯一索引在关联视图中也是唯一的,那么这个基础表就是键保留表。   可更新的关联视图:  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子句,那么忽略该记录。       作者 hulubo
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部