刘胜涛
作者刘胜涛·2014-07-24 14:19
数据库管理员·Volkswagen Group China

读书笔记:一次性向多个表中插入数据。。。

字数 1816阅读 1940评论 2赞 8

话说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 条评论

lxpeng163lxpeng163项目经理哈尔滨银行
2014-08-16 07:20
rocky420rocky420数据库开发工程师Rocky COMPANY
2014-08-08 08:35
长见识了,db2插数通过check约束实现了数据的分类,谢谢分享
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广