数据库

 首页 > 数据库 > Oracle > oracle中update,insert,delete的高级用法

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

分享到:
【字体:
导读:
         摘要:一、对视图的更新。update,insert,delete除了可以作用于单表,还可以作用于视图、子查询,但是有种种限制。www.2cto.com视图(子查询)的限制:1、没有集合操作符(并、差、交);2、没有DISTINCT操作符;3、... SyntaxHighlighter.a...

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

一、对视图的更新。
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
oracle中update,insert,delete的高级用法
分享到:
oracle创建表/序列/注释/主键
oracle创建表/序列/注释/主键 DECLARE    iCount   number(2) := 0; BEGIN    SELECT COUNT (*) INTO iCount FROM   user_sequences u WHERE   u.sequence_name = 'SEQ_TCAPITALNOTIFY';  www.2cto.com      IF iCount = 0    THEN       /*创建序列*/       EXECUTE IMMEDIATE 'creat...
pl/sql远程连接orcle服务器问题
pl/sql远程连接orcle服务器问题 可能的问题:   1、windows的防火墙所致   2、环境变量PATH里没有加上%ORACLE_HOME%\bin导致   ORACLE 连接设置方法很多,这里写四种,但主要是远程连接方法。   第一种情况:       若oracle服务器装在本机上,那就不多说了,连接只是用户名和密码的问题了。不过要注意环境变量%OR...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……