|NO.Z.00039|——————————|BigDataEnd|——|Java&MySQL单表/约束/事务.V17|——|MySQL.v17|不可重复读演示及解决|

一、不可重复读演示及解决
### --- 不可重复读演示及解决

~~~     # 恢复数据(把数据改回初始状态)
——>        不可重复读: 同一个事务中,进行查询操作,但是每次读取的数据内容是不一样的
### --- 打开两个窗口A和窗口B,选择数据库后开启事务

use db2;
start transaction;
### --- B窗口开启事务后,先进行一次数据查询

~~~     # 这是B窗口的事务中,执行第一次查询
select * from account;
### --- 在 A 窗口开启事务后,将用户tom的账户 + 500 ,然后提交事务

~~~     # A窗口修改完数据之后,提交事务
-- 修改数据
update account set money = money + 500 where name = 'tom';
-- 提交事务
commit;
### --- B窗口再次查询数据

——>        两次查询输出的结果不同,到底哪次是对的?
——>        不知道以哪次为准。 很多人认为这种情况就对了,无须困惑, 当然是后面的为准。
——>        我们可以考虑这样一种情况:
——>        比如银行程序需要将查询结果分别输出到电脑屏幕和发短信给客 户,结果在一个事务中针对不同的输出目的地进行的两次查询不一致,导致文件和屏幕中的结果不一致,银行工作 人员就不知道以哪个为准了

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on 2022-04-05 13:35  yanqi_vip  阅读(28)  评论(0)    收藏  举报

导航