当使用乐观锁定策略时,它可以解决如下并发问题:
| 第一笔交易开始| | | | 选择一行 | | | 第二笔交易开始 | 使用版本检查更新行 | | | 选择同一行 | 提交交易 | | | 使用版本检查更新行 | | | | 因为版本脏了所以回滚
但是,如果在极少数情况下,如果第二个事务中的更新是在第一个事务中的 udpate 之后但在事务提交之前呢?
| 第一笔交易开始| | | 第二笔交易开始 | 选择一行 | | | 选择同一行 | 使用版本检查更新行 | | | 使用版本检查更新行 | 提交交易 | | | 因为版本脏了所以回滚 // 会吗? | | | |
我做了一个实验,第二个事务中的更新无法读取“脏”版本,因为第一个事务尚未提交。在这种情况下,第二次交易会失败吗?