oracle数据库中 multitable INSERT 是怎么回事?

普通的insert 操作,通常只能向一个表中插入数据。
使用multitable insert可以实现一条sql语句同时向多个表中插入数据。

下面用例子证明:

表S中有4条数据,如下所示:

select * from s;
ID    NAME
1    1    wb
2    2    yf
3    3    wzx
4    4    wzh

为了后面练习 ,根据表表S创建空表S1,S2,S3,S4:
create table s1 as select * from s where 1=2;
create table s2 as select * from s where 1=2;
create table s3 as select * from s where 1=2;
create table s4 as select * from s where 1=2;

 

下面通过multitable insert语句 将表S中的数据根据id值的不同,分别插入到不同的表:
INSERT FIRST WHEN id = 1 THEN INTO s1
VALUES
  (id, name) WHEN id = 2 THEN INTO s2
VALUES
  (id, name) WHEN id = 3 THEN INTO s3
VALUES
  (id, name) WHEN id = 4 THEN INTO s4
VALUES
  (id, name)
  SELECT id, name from s;
commit;

执行成功后发现4条数据插入到4个不同的表。通过如下语句可执行相应的操作。

select * from s1;
select * from s2;
select * from s3;
select * from s4;

问题来了,能否将数据插入到视图呢?下面练习证明不可以:

create view vs2 as select * from s2;


INSERT FIRST WHEN id = 1 THEN INTO s1
VALUES
  (id, name) WHEN id = 2 THEN INTO vs2  --视图不适用此处
VALUES
  (id, name) WHEN id = 3 THEN INTO s3
VALUES
  (id, name) WHEN id = 4 THEN INTO s4
VALUES
  (id, name)
  SELECT id, name from s;
commit;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值