假设我已提交隔离级别读取
我的交易记为A
另一项交易修改A和B
然后我读了B
我做了一些涉及A和B
所以我会发现自己正在与一个从未存在过的国家合作..? 你是如何应对的?
答案 0 :(得分:0)
解决方案是锁定资源,直到它被释放:
居:
注意:如果K必须读A和B,但不能读A,它就不会无用地阻止B.
另一个解决方案是插入许多控件:
居:
答案 1 :(得分:0)
您应该提供更详细的信息,例如步骤1和3是在相同或不同的交易中执行。还要提一下步骤4,即"业务逻辑"读取或更新A和/或B.如果没有更多信息,则无法准确回答您的问题。在高层 -
Read committed:您会看到已提交的行。在这种情况下,由于在另一个事务修改它之前读取了A(假设您的子弹描绘了事件I到IV的顺序),在步骤II之后可能没有最新值A.如果您在单独的交易中阅读B,则可能会在步骤II中看到B是最新的。
可重复读取:在同一事务中始终读取相同的数据。如果一个事务尝试修改A而另一个事务正在读取它,则根据并发控制机制,重复读取或更新将失败。
P.S。要执行原子更新,您可以考虑使用"选择更新"查询。