乐观锁会带来僵局吗?

时间:2019-04-01 13:18:27

标签: deadlock optimistic

示例: 我有一个表A(id,版本和字段)和一个表B(id,版本和字段)。

我需要进行先编辑记录A,然后再编辑记录B的交易。

  • 开始交易
  • 更新表设置字段='aaa',版本=版本+1,其中id = 1,版本=保存的版本 -如果recordupdated = 0,则回滚
  • 更新tableB设置field ='bbb',version = version + 1,其中id = 1,version = savedversion -如果recordupdated = 0,则回滚
  • 提交

但是如果我有另一个线程需要以相反的顺序更新表(在复杂的环境中,则开发人员可能不遵循策略),或者需要更新表A(与第一个事务),然后表B(与第一个事务相同的记录),再到表A(与第一个事务相同的记录),是否会发生死锁?

什么是在乐观锁中进行交易的正确方法? 解决方案只能使用存储过程吗?

0 个答案:

没有答案