建立表:
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 依據條件實現 ...