oracle 多表插入

2021-06-21 04:23:21 字數 2161 閱讀 9325

建立表:

create table tb_user

( id integer primary key,

user_name varchar2(20) not null,

user_age integer not null

);create sequence seq_user

increment by 1

start with 1

nomaxvalue

nocycle

cache 10;

create or replace trigger tr_user before insert on tb_user for each row

begin

select seq_user.nextval into :new.id from dual;

end;

插入一些資料:

declare

v_age tb_user.user_age%type;

v_name tb_user.user_name%type;

begin

for i in 1..100 loop

select dbms_random.value(1, 100) into v_age from dual;

v_name := 'for_' || v_age;

insert into tb_user(user_name, user_age) values (v_name, v_age);

end loop;

commit;

end;

再建立兩張表:

create table tb_user1

( id integer primary key,

user_name varchar2(20) not null,

user_age integer not null

);create table tb_user2

( id integer primary key,

user_name varchar2(20) not null,

user_age integer not null

);

現在進行多表插入。

insert all不帶條件:

insert all

into tb_user1

select id, user_name, user_age from tb_user;

commit;

insert all帶條件:

insert all

when user_age < 18 then

into tb_user1

else

into tb_user2

select id, user_name, user_age from tb_user;

commit;

insert first帶條件:

insert first

when user_age < 18 then

into tb_user1

else

into tb_user2

select id, user_name, user_age from tb_user;

commit;

以下**

all與first的區別

all:

不考慮先後關係,只要滿足條件,就全部插入;

first:

考慮先後關係,如果有資料滿足第乙個

when

條件又滿足第二個

when

條件,則執行第乙個

then

插入語句,第二個

then

就不插入第乙個

then

已經插入過的資料了。

其區別也可描述為,

all只要滿足條件,可能會作重複插入;

first

首先要滿足條件,然後篩選,不做重複插入。

oracle多表插入

發表 csdn 日期 20090828 在oracle中關於多表插入的有四種分別是 1.無條件的多表insert all 2.帶條件的多表insert all 3.帶條件的多表insert first 4 pivoting insert 語法 insert all first when condit...

oracle的多表插入

q5,oracle的多表插入操作。在業務處理過程中,經常會碰到將業務資料按照條件分別插入不同的資料表的問題,按照傳統的處理方式,需要分條件執行多次檢索後分別插入不同的表單,這樣因為執行了重複的檢索造成cpu和記憶體的浪費,從oracle9i開始引入了insert all關鍵字支援將某張表的資料同時插...

oracle實現同時多表插入

oracle實現同時多表插入 最簡單的,一條select結果向多個表中插入 insert all into test1 id,name,cj into test2 id,name,cj into test3 id,name,cj select id,name,cj from test 依據條件實現 ...