用insert all實現同時向多表插入資料

jss001發表於2009-03-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語句應該是最簡單最高效的寫法,不過發貼者提出的問題倒是讓我想起了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部落格 ” ,連結:http://blog.itpub.net/18921899/viewspace-1016710/,如需轉載,請註明出處,否則將追究法律責任。

相關文章