话说oracle的语法很强大,可以使用一条语句向表中插入多条数据 。DEPT表结构与内容如下:
DEPTNO DNAME LOC
---------- ---------- ----------
1 a NEWYORK
2 b BOSTON
3 c CHICAGO
可以使用insert all语句向多个表:
insert all
when loc in ('NEWYORK','BOSTON') THEN
INTO dept_east(deptno,dname,loc) values(deptno,dname,loc)
WHEN loc ='CHICAGO' THEN
INTO dept_mid(deptno,dname,loc) values(deptno,dname,loc)
else
into dept_west(deptno,dname,loc) values(deptno,dname,loc)
针对DB2比较复杂一些,必须使用UNION ALL构造内联视图,然后以该视图做为insert的目标,需要插入数据的表有约束条件,如果约束条件不唯一,也就是说多个表约束条件相同,比如两个表LOC都能支持BOSTON,则会插入报错。
create table dept_east(deptno integer,dname varchar(20),loc varchar(20) check(loc in ('NEWYORK','BOSTON')))
create table dept_mid(deptno integer,dname varchar(20),loc varchar(20) check(loc in ('CHICAGO')))
create table dept_east(deptno integer,dname varchar(20),loc varchar(20) check(loc in ('DALLAS')))
一次性插入到多个表:
insert into (select * from dept_east union all
select * from dept_mid union all
select * from dept_west)
select * from dept ;
怎么样,是不是灰常神奇啊,到目前为止支持一次性插入到多个表的只有oracle与DB2,不可否认,oracle的语法更强大一些。。。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞8
添加新评论2 条评论
2014-08-16 07:20
2014-08-08 08:35