新聞中心
insert all (復(fù)合表插入),是將一個(gè)查詢結(jié)果同時(shí)插入多個(gè)表中的功能。使用insert all的好處是通過讀取一次源表就可以插入多張目標(biāo)表,減少重復(fù)讀取的開銷。
語法:
INSERT [ALL] [conditional_insert_clause]
[insert_into_clause value_clause] (subquery);
conditional_insert_clause is:
[ALL] [FIRST]
[WHEN condition THEN] [insert_into_clause value_clause]
[ELSE] [insert_into_clause value_clause]
all:不考慮先后關(guān)系,只要滿足條件,就全部插入;
first:考慮先后關(guān)系,如果有數(shù)據(jù)滿足第一個(gè)when條件又滿足第二個(gè)when條件,則執(zhí)行第一個(gè)then插入語句,第二個(gè)then就不插入第一個(gè)then已經(jīng)插入過的數(shù)據(jù)了。
其區(qū)別也可描述為,all只要滿足條件,可能會(huì)作重復(fù)插入;first首先要滿足條件,然后篩選,不做重復(fù)插入
示例:
insert all when c1<1000 then into samall_orders values (oid,c1,sid,cid) when c1 <2000 then into medium_orders values (oid,c1,sid,cid) when c1>2000 and c1 <2900 then into large_orders vlaues (oid,c1,sid,cid) else into special_orders select oid,c1,sid,cid from orders;指定insert first 當(dāng)?shù)谝粋€(gè)when條件成立時(shí),執(zhí)行該when條件后的語句,并且跳過后面的 WHEN 子句(后面的when語句都不再考慮滿足第一個(gè)When子句的記錄,即使該記錄滿足when語句中的條件)。
insert first when c1<1000 then into samall_orders values (oid,c1,sid,cid) when c1 <2000 then into medium_orders values (oid,c1,sid,cid) when c1>2000 and c1 <2900 then into large_orders vlaues (oid,c1,sid,cid) else into special_orders select oid,c1,sid,cid from orders; 上面兩條語句區(qū)別在第二個(gè)when條件,insert all 中 第二個(gè)條件會(huì)插入orders 表中c1<2000的記錄,insert first 中第二個(gè)when條件會(huì)插入orders表中1000 另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站標(biāo)題:oracleinsertall復(fù)合表插入-創(chuàng)新互聯(lián)
文章URL:http://www.dlmjj.cn/article/dsdeep.html