Oracle-31-对视图DML操作

一、对视图进行DML操作

1.创建一个视图v_person


create or replace noforceview v_person

as select *from person where id between 1003 and 1007;

 

2.向视图v_person中进行insert操作


insertinto v_person (id,name) values(1010,’J’)


【注意】对视图进行DML操作时候,只能对简单视图执行DML操作;复杂视图不支持DML操作。由于v_person没有使用with check option,因此对于子查询检索到的行可以进行增删改查。

 

1:练习对视图(没有with check option)插入数据。

解:当前用户下视图v_stu的数据




视图v_stu的基表是student表,该表当前的数据:




对视图插入新数据:




查询视图发现多了一行:




查询基表发现多了一行:




因此,对视图进行DML操作可达到修改基表数据的效果。


2:练习对视图(有with check option)插入数据。

解:创建视图并将已存在的视图覆盖,带上with check option:




然后插入如下数据:




报错原因是’男’不满足视图中的where条件,视图有with check option是对新数据进行校验,如果满足where条件,则允许插入,否则不允许。

同理,如下报错是因为视图在创建的时候要求只读,即with read only:




3:练习两张基表生成视图且验证能否在该视图中插入新数据。

解:当前的sc表:




当前的course表:




基于sc表和course表创建视图v_2,注意下图SQL命令:




向视图中插入新数据:




报错原因是该视图是基于两张表创建的,所以无法插入新数据。

 

【注意】

以下三种情况无法对视图做DML操作:

1.带有with check option的视图,如果插入数据不满足where条件则无法做DML操作,如2

2.带有with read only的视图,2

3.基于两张及两张以上基表的视图,比如student,course,sc表生成一个视图,那么这个视图无法做DML操作如3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值