登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

飞哥的技术博客

世上无难事,只怕有心人!

 
 
 

日志

 
 
 
 

用insert all实现同时向多表插入数据 - 三思笔记,ORACLE学习轨迹~~~~ - ITPUB个人空间 - powered by X-Space  

2009-05-11 11:59:38|  分类: Oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
扫地不过是我表面上的工作,我真正的身份其实是无名老僧-----------手里那根扫把~

用insert all实现同时向多表插入数据

上一篇 / 下一篇  2009-02-02 16:40:09 / 个人分类:原创笔记

看到一个很有意思的问题如下:

有三个表,表A , 表B, 表C。这3个表,都有4个字段,并且这4个字段名称都一样,
分别是:ID  NAME  CODE  MESSAGE。
我现在要做以下操作:
每一个表都同时插入5条数据。其中这5条数据当中,前两列是一样的,第三列的数据是1--5,而最后一列的值是固定的。
例如:
表A:  ID     NAME    CODE  MESSAGE
       0001  xiaoming  1      140
       0001  xiaoming  2      112
       0001  xiaoming  3      84
       0001  xiaoming  4      56
       0001  xiaoming  5      28

表B:  ID     NAME  CODE  MESSAGE
       0001  xiaoming  1      55
       0001  xiaoming  2      33
       0001  xiaoming  3      57
       0001  xiaoming  4      67
       0001  xiaoming  5      45

表C:  ID     NAME  CODE  MESSAGE
       0001  xiaoming  1      1000
       0001  xiaoming  2      897
       0001  xiaoming  3     233
       0001  xiaoming  4      777
       0001  xiaoming  5     1278

提问者自己觉见着写15条insert太没技术含量(呵呵,怎么叫有技术含量呢),希望看到其它的不同写法。就其需求而言我觉着insert语句应该是最简单最高效的写法,不过发贴者提出的问题倒是让我想起了自9i开始提供了insert all语法,借助该语法实现如下:
> create table tba (id varchar2(10),name varchar2(10),code number,message number);

> create table tbb (id varchar2(10),name varchar2(10),code number,message number);

> create table tbc (id varchar2(10),name varchar2(10),code number,message number);


SQL> insert all
  2  into tba values (id,name,code,messagea3  into tbb values (id,name,code,messageb4  into tbc values (id,name,code,messagec5  select '0001' id,'xiaoming' name,1 code,140 messagea, 55 messageb,1000 messagec from dual
  6  union all
  7  select '0001' ,'xiaoming' ,2 ,112 , 33 ,897  from dual
  8  union all
  9  select '0001' ,'xiaoming' ,3 ,84 , 57 ,233  from dual
 10  union all
 11  select '0001' ,'xiaoming' ,4 ,56 , 67 ,777  from dual
 12  union all
 13  select '0001' ,'xiaoming' ,5 ,28 , 45 ,/

> select * from tba;

ID         NAME             CODE    MESSAGE
---------- ---------- ---------- ----------
0001       xiaoming            1        140
0001       xiaoming            2        112
0001       xiaoming            3         84
0001       xiaoming            4         56
0001       xiaoming            5         28

SQL> select * from tbb;

ID         NAME             CODE    MESSAGE
---------- ---------- ---------- ----------
0001       xiaoming            1         55
0001       xiaoming            2         33
0001       xiaoming            3         57
0001       xiaoming            4         67
0001       xiaoming            5         45

SQL> select * from tbc;

ID         NAME             CODE    MESSAGE
---------- ---------- ---------- ----------
0001       xiaoming            1       1000
0001       xiaoming            2        897
0001       xiaoming            3        233
0001       xiaoming            4        777
0001       xiaoming            5       1278

功能实现。


相关阅读:
查看全部评论
我来说两句

清空Cookie - 联系我们 - ITPUB个人空间 - 交流论坛 - 空间列表 - 站点存档 - 升级自己的空间

Powered by 3.0.2 © 2001-2007 Comsenz Inc.
网站统计

Open Toolbar



引文来源  用insert all实现同时向多表插入数据 - 三思笔记,ORACLE学习轨迹~~~~ - ITPUB个人空间 - powered by X-Space
  评论这张
 
阅读(763)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018