这是来自Java Persistence With Hibernate的丢失更新问题的描述
如果两个事务同时更新一行然后更新第二行,则会发生丢失更新 事务中止,导致两个更改都丢失。这发生在系统中 不要实现锁定。并发事务不是孤立的。
T1 - > 1.更新D1 - > 3.提交
T2 - > 2.更新D1 - > 4.回滚。 //数字表示操作顺序。
这里我的第一个问题是如何通过T2完成回滚来丢失T1所做的更改?
第二个问题是,我浏览了很多更新问题,我所获得的描述与同一本书中描述的第二个丢失更新问题匹配。
T1 - > 1.选择D1 - > 3.更新D1 - > 4.提交
T2 - > 2.选择D1 - > 5.更新D1 - > 6.提交
此处T1的更改将被T2的提交覆盖。
更新丢失的正确方法是什么? 如果我们考虑第一个场景,那么如何回滚事务1提交的更改?