即使提交了更新数据,MySQL仍然没有显示更新后的数据

4
我正在使用两个窗口,因为我想实现事务的概念。
窗口1:begin; 窗口1:update employee set salary = 45000 where ssn = '123456789'; 窗口2:begin; 窗口2:select * from employee where ssn = '123456789'; 这个命令显示了正确的先前数据。
窗口1:commit; 窗口2:select * from employee where ssn = '123456789'; 在这里,我应该得到更新后的工资45000。但是我的窗口2仍然只显示之前的数据。我哪里出错了?
1个回答

2
你的期望是错误的,这就是全部。交易之间看到对方工作的方式由所谓的事务隔离级别确定。默认情况下,mysql使用可重复读取的隔离级别,这意味着:
如果事务隔离级别为REPEATABLE READ(默认级别),则在同一事务中所有一致的读取都读取由该事务中第一个此类读取建立的快照。您可以通过提交当前事务并发出新查询来获取更新的快照。
您可以将隔离级别更改为读提交以启用您期望的行为:
使用READ COMMITTED隔离级别,事务中的每个一致读取都设置并读取其自己的新鲜快照。

谢谢您的回答。但我只想知道如何将MySQL中的默认事务隔离级别全局更改为读已提交。 - Kishan Raval

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接