insert all和insert first語句,用于按給定條件同時向多個表插入數(shù)據(jù),以下記錄了它們的用法和區(qū)別。
創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站建設、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的榆樹網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
1、無條件insert all
用于不分條件的向幾個表同時插入一批數(shù)據(jù)。
建立測試表
create table t1(a number, b varchar2(20));
insert into t1 values(1, 'aaa');
insert into t1 values(2, 'bbb');
insert into t1 values(3, 'ccc');
commit;
create table t2(a number, b varchar2(20));
create table t3(a number, b varchar2(20));
create table t4(a number, b varchar2(20));
從第一個表中獲取數(shù)據(jù),并同時寫入其它幾個表,各個表可以有不同的值
insert all into t2 values (a + 1, b)
into t3 values (a + 2, b)
select a, b from t1;
commit;
如果各個表插入的數(shù)據(jù)一樣,則以上還可以簡化
insert all into t2
into t3
select a, b from t1;
commit;
2、有條件insert all
根據(jù)查詢數(shù)據(jù)的不同值,分別插入不同表
insert all when a >=1 then
into t2
when a >=2 then
into t3
else
into t4
select a, b from t1;
commit;
觀察幾個表的查詢結果
select * from t1;
A B
---------- --------------------
1 aaa
2 bbb
3 ccc
select * from t2;
A B
---------- --------------------
1 aaa
2 bbb
3 ccc
select * from t3;
A B
---------- --------------------
2 bbb
3 ccc
select * from t4;
未選定行
3、有條件insert first
如果第一個when子句的值為true,對于給定的行執(zhí)行相應的into子句,并且跳過后面的when子句,后面的插入語句不再執(zhí)行
insert first when a >=1 then
into t2
when a >=2 then
into t3
else
into t4
select a, b from t1;
commit;
觀察表的查詢結果
select * from t1;
A B
---------- --------------------
1 aaa
2 bbb
3 ccc
select * from t2;
A B
---------- --------------------
1 aaa
2 bbb
3 ccc
select * from t3;
未選定行
select * from t4;
未選定行