在特定视图更新任何值后,MySQL 是否会在基础表及其关联视图(如果有)中更新相同的值?
是的,如果在视图中更新了 MySQL,那么它也会在基础表及其关联视图中更新值。为了说明这一点,我们以包含以下数据的表 Student_info 为例 −
mysql> Select * from student_info; +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Chandigarh | Literature | | 125 | Raman | Shimla | Computers | | NULL | Ram | Jhansi | Computers | +------+---------+------------+------------+ 4 rows in set (0.00 sec)
以下是基于表“Student_info”创建的视图“Info”
mysql> Select * from Info; +------+---------+------------+ | Id | Name | Subject | +------+---------+------------+ | 101 | YashPal | History | | 105 | Gaurav | Literature | | 125 | Raman | Computers | | NULL | Ram | Computers | +------+---------+------------+ 4 rows in set (0.00 sec)
现在在以下查询中,我们将更新视图“Info” −
mysql> Update info set id = 130 where Name = 'Ram'; Query OK, 1 row affected (0.88 sec) mysql> Select * from Info; +------+---------+------------+ | Id | Name | Subject | +------+---------+------------+ | 101 | YashPal | History | | 105 | Gaurav | Literature | | 125 | Raman | Computers | | 130 | Ram | Computers | +------+---------+------------+ 4 rows in set (0.00 sec)
上述结果集表明视图“Info”已更新。
mysql> Select * from student_info; +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Chandigarh | Literature | | 125 | Raman | Shimla | Computers | | 130 | Ram | Jhansi | Computers | +------+---------+------------+------------+ 4 rows in set (0.00 sec)
上述结果集表明,当我们更新名为“info”的视图时,基础表也会更新。
下面是基于视图“info”创建的名为“info_less”的视图,而且在我们更新视图“info”时,它也会更新。
mysql> Select * from info_less; +------+-------+-----------+ | Id | Name | Subject | +------+-------+-----------+ | 125 | Raman | Computers | | 130 | Ram | Computers | +------+-------+-----------+ 2 rows in set (0.00 sec)
广告