INSERT ALL介紹
何謂INSERT ALL
- 可以在多個表格新增資料,可以使用2種新增模式,第一種為一般新增,第二種為附加條件新增(在INSERT ALL加上WHEN子句)
一般新增格式
INSERT ALL
INTO table_reference [(column [,column...])]
[VALUES ({expr | default} [,{expr | default}...])]
INTO table_reference [(column [,column...])]
[VALUES ({expr | default} [,{expr | default}...])]
(subquery);
table_reference:插入目標的表格名稱
column:欄位名稱
expr:資料來源表格的欄位名稱
default:資料來源表格的欄位預設值
subquery:子查詢
一般新增使用方式
新增employees表格資料到emp表格與emp2表格
insert all
into emp(xid,name) values(emp_id,last_name)
into emp2(xid,name) values(emp_id,last_name)
select emp_id,last_name from employees;
新增employees表格資料到emp表格與emp2表格(使用別名的方式)
insert all
into emp(xid,name) values(id+10,last_name)
into emp2(xid,name) values(id+20,last_name)
select emp_id as id,last_name from employees;
附加條件新增(在INSERT ALL加上WHEN子句)格式
INSERT ALL
WHEN condition THEN insert_into_clause [insert_into_clause...]
[WHEN condition THEN insert_into_clause [insert_into_clause...]...]
[ELSE insert_into_clause [insert_into_clause...]]
(subquery);
condition:條件
insert_into_clause:格式和INSERT句INTO子句以後的部分相同
subquery:子查詢
附加條件新增使用方式
如果employees表格裡的emp_id小於101就新增資料到emp2表格,如果employees表格裡的emp_id小於102就新增資料到emp3表格
insert all
when emp_id<101 then into emp2(xid,salary)
when emp_id<102 then into emp3(xid,salary)
select emp_id,salary from employees;
如果employees表格裡的emp_id小於101就新增資料到emp2表格,如果都不是就新增到emp3表格
insert all
when emp_id<101then into emp2(xid,salary)
else into emp3(xid,salary)
select emp_id,salary from employees;