insert all和insert first語句的用法

llnnmc發表於2019-04-27

insert all和insert first語句,用於按給定條件同時向多個表插入資料,以下記錄了它們的用法和區別。

1、無條件insert all

用於不分條件的向幾個表同時插入一批資料。

建立測試表

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));

從第一個表中獲取資料,並同時寫入其它幾個表,各個表可以有不同的值

insert all into t2 values (a + 1, b)

              into t3 values (a + 2, b)

    select a, b from t1;

commit;

如果各個表插入的資料一樣,則以上還可以簡化

insert all into t2

              into t3

    select a, b from t1;

commit;

2、有條件insert all

根據查詢資料的不同值,分別插入不同表

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,對於給定的行執行相應的into子句,並且跳過後面的when子句,後面的插入語句不再執行

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;

未選定行

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28974745/viewspace-2642735/,如需轉載,請註明出處,否則將追究法律責任。

相關文章