天天看點

[Oracle] Insert All的妙用

Oracle中的insert all是指把同一批資料插入到不同的表中,假如現在有個需求:把t表中的資料分别插入t1,t2,如果你不知道insert all,你可能會使用insert插入2次,如下所示:

事實上,以上這種寫法是錯誤的,因為在兩次insert的過程中,t表的資料有可能已經發生了變化,也就是說,t1,t2表得到的資料有可能不一樣,正确的寫法應該是采用insert all:

insert first/all 是對每一行來進行判斷

兩者差別:

insert first:對于每一行資料,隻插入到第一個when條件成立的表,不繼續檢查其他條件。

insert all : 對于每一行資料,對每一個when條件都進行檢查,如果滿足條件就執行插入操作。 

看下面的例子:

insert all還可以實作行轉列插入: