ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 用insert all实现同时向多表插入数据

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

原创 Linux操作系统 作者:junsansi 时间:2009-02-02 16:40:09 0 删除 编辑

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

有三个表,表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语句应该是最简单最高效的写法,不过发贴者提出的问题倒是让我想起了oracle自9i开始提供了insert all语法,借助该语法实现如下:
SQL
create table tba (id varchar2(10),name varchar2(10),code number,message number);

Table created

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

Table created

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

Table created

SQL

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

15 rows inserted

SQL
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

功能实现。

原链接如下:
http://www.itpub.net/thread-1118633-1-1.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7607759/viewspace-545043/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-21

  • 博文量
    640
  • 访问量
    4180146