mysql视图的更新 条件_SQL数据库视图什么情况下可以更新

更新视图有以下三条规则:

1、 若视图是基于多个表使用联接操作而导出的,那么对这个视图执行更新操作时,每次只能影响其中的一个表。

2、 若视图导出时包含有分组和聚合操作,则不允许对这个视图执行更新操作。

3、 若视图是从一个表经选择、投影而导出的,并在视图中包含了表的主键字或某个候选键,这类视图称为‘行列子集视图’。对这类视图可执行更新操作。

视图只有满足下列条件才可更新:

1、select语句在选择列表中没有聚合函数,也不包含TOP,GROUP BY,UNION(除非视图是分区视图)或DISTINCT子句。聚合函数可以用在FROM子句的子查询中,只要不修改函数返回的值。

2、select语句的选择列表中没有派生列。派生列是由任何非简单列表达式(使用函数、加法或减法运算符等)所构成的结果集列。

3、select语句中的FROM子句至少引用一个表。select语句不能只包含非表格格式的表达式(即不是从表派生出的表达式)。

4、INSERT,UPDATE和DELETE语句在引用可更新视图之前,也必须如上述条件指定的那样满足某些限制条件。只有当视图可更新,并且所编写的UPDATE或INSERT语句只修改视图的FROM子句引用的一个基表中的数据时,UPDATE和INSERT语句才能引用视图。

只有当视图在其FROM子句中只引用一个表时,DELETE语句才能引用可更新的视图。

视图在包含以下结构时不可以更新

1、含有集合运算符:union,union all,intersect

2、distinct关键字

3、group by,order by,connect by和start with

4、子查询

5、分组函数

6、需要更新的列不是视图定义的

7、有连接查询

8、违反基本表的约束

  • 6
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值