

KingbaseES、Oracle和MySQL的功能对比
视图(View)


键保留表(Key-Preserved Table)
目标基表(Target Base Table)
目标基表与键保留表的关系
简单的等值连接的两表JOIN会存在以下情况
两个表的连接列都不是主键:t1和t2组成视图v1且都不存在主键,则对于视图而言无键保留表。

两个表的连接列都是主键列:Join类型是全外连接时不存在键保留表。若为左连接,左侧表可能是键保留表,右侧表不是键保留表。


两个表的连接列只有一个是主键列


外连接与可更新视图
多表连接视图的可更新性和其查询中的连接方式有很大关系,因此为了更加准确的判断一个多表连接视图是否支持更新,需要对定义视图的查询进行必要的逻辑等价变换,在消除外连接后判断视图的可更新性。
如何判断视图列是否可以更新
视图的列为直接查询的基表列
更新的视图列必须是键保留表的相关列,即目标表必须为键保留表,最后的图例中只能更新视图中col_a和col_b两个列,另外两个列col_c和col_d是不能被更新的
不可更新连接列
首先确认视图存在键保留表
对于INSERT和UPDATE的目标基表如何选择?根据DML的目标列确认目标基表,目标列不能涉及多个表
对于DELETE操作不存在视图的目标列信息,如何选择目标基表呢?选择第一个键保留表作为目标基表




总结
供稿:产品研发中心
文章转载自金仓数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。






