def fun(){ def version = select version from xxx; //do something
update xxx set field=value,version = version + 1 where version = $version; }
night98
2019-06-03 10:38:57 +08:00
新增一个唯一主键,按唯一主键 + version 确定单条记录。 然后执行楼上说的: update b set version=version+1 where version=? 再根据返回的修改条数的数据判断是否修改成功。 或者就是你这种,联合主键 + version 确定单条记录,更新执行完毕后根据返回的更新条数判断是否更新成功。
fantastM
2019-06-03 10:52:22 +08:00
不知道你的程序逻辑里,具体需要执行哪些 SQL......粗略看下来,似乎是「幻读」的问题。你可以对着 MySQL 的文档看看,如果是「幻读」的话,那可以用 MySQL 的隔离级别来解决。当然也可以用分布式锁解决