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

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

有三个表,表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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7607759/viewspace-545043/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值