- 通过真实表修改数据,会影响视图
将上面的数据改为 99,并观察视图的数据
update score set score = 99 where student_id = 1 and course_id = 1;
select * from score;
select * from v_student_score order by id;
- 通过视图修改数据会影响基表
如果修改视图中的数据,会影响基表吗?
select * from v_student_score;
将上述分数改为80分
但是发生了下面的问题
那就改变视图 v_student_score_v1 的数据
update v_student_score_v1 set score where id = 1;
观察视图和基础表的数据
select * from v_student_score_v1 order by id asc;
select * from score where student_id = 1;
因此,不论更新了视图还是基础表,都会相互被影响,查询出来的数据都是最新结果
4.1.注意事项
- 修改真实表会影响视图,修改视图同样也会影响真实表
- 以下视图不可更新
- 创建视图时使用聚合函数的视图
- 创建视图时使用distinct
- 创建视图时使用GROUP BY 以及HAVING子句
- 创建视图时使用UNION或UNION ALL
- 查询列表中使用子查询
- 在FROM子句中引用不可更新视图