ITPub博客

首页 > 数据库 > Oracle > 用insert all实现同时向多表插入数据

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

原创 Oracle 作者:jss001 时间:2009-03-09 04:11:29 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
> 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

功能实现。

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

[@more@]

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

请登录后发表评论 登录
全部评论
  • 博文量
    306
  • 访问量
    871799