首页 > 数据库 > Oracle > 用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> SQL>
insert 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
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 ,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
功能实现。
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/18921899/viewspace-1016710/ ,如需转载,请注明出处,否则将追究法律责任。