更新视图的限制

视图是由一个或多个基本表(或视图)导出的表,它可以是连接多张表的虚表,也可以是通过where子句限制返回行列之后的查询结果。在使用敏感数据的企业中,视图几乎是唯一可以用来面对普通用户的数据库对象。

利用数据库视图进行更新实质上就是对数据库的基本表进行更新。所以视图的更新update命令有很多限制。

1,如果更新视图的字段来自字段表达式或者是常数,则不允许对视图进行Insert、update操作(但可以进行delete操作)。因为,假设用字段表达式或者是常数对视图进行了更新,那么视图的相关行或列就与基本表中的相关行或列不一致,或者在基本表中根本找不到,对视图的更新实质上是对基本表的更新,因此和基本表的不一致的视图是毫无意义的。(不允许Insert操作也是同样的道理)

​2,如果更新字段来自库函数,则不允许对视图进行Insert、update操作(但可以进行delete操作)。举个例,如果当前视图只是某个基本表中的一部分,而现在要用sum函数对视图进行更新,那么sum就会将基本表中满足条件的值都相加,而其实视图中只包含满足条件的一部分,这样就会出现错误。

3,更新字段包含group by,distinct等函数,这跟2的解释是一样的。

4,​若视图来自两个及以上的基本表,则不允许更新。这是因为如果要更新这样的视图,那么就会涉及到多个基本表的同时修改,这会导致数据库的存取非常复杂,因此,在现有的关系数据库系统中,只支持来自单个表的视图的更新。

5,在一个不允许更新的视图上定义的视图​不允许更新。

【摘取自:利用视图更新数据库的探讨。郭小燕,张明】​

摘自:

http://www.doc88.com/p-2886746916477.html

http://blog.sina.com.cn/s/blog_e1a6a43f0102vkdk.htm

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值