KingbaseES、Oracle和MySQL的功能对比
01
视图(View)
键保留表(Key-Preserved Table)
目标基表(Target Base Table)
目标基表与键保留表的关系
02
视图的更新操作
视图的可更新性判断
简单的等值连接的两表JOIN会存在以下情况
两个表的连接列都不是主键:t1和t2组成视图v1且都不存在主键,则对于视图而言无键保留表。
两个表的连接列都是主键列:Join类型是全外连接时不存在键保留表。若为左连接,左侧表可能是键保留表,右侧表不是键保留表。
两个表的连接列只有一个是主键列
外连接与可更新视图
多表连接视图的可更新性和其查询中的连接方式有很大关系,因此为了更加准确的判断一个多表连接视图是否支持更新,需要对定义视图的查询进行必要的逻辑等价变换,在消除外连接后判断视图的可更新性。
如何判断视图列是否可以更新
视图的列为直接查询的基表列
更新的视图列必须是键保留表的相关列,即目标表必须为键保留表,最后的图例中只能更新视图中col_a和col_b两个列,另外两个列col_c和col_d是不能被更新的
不可更新连接列
目标基表的选择
首先确认视图存在键保留表
对于INSERT和UPDATE的目标基表如何选择?根据DML的目标列确认目标基表,目标列不能涉及多个表
对于DELETE操作不存在视图的目标列信息,如何选择目标基表呢?选择第一个键保留表作为目标基表
视图重写过程
03
总结
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!