转账业务场景

A转给B100元

两个关键点:

1 A B sql在一个事务中

2 A转账前,先查余额

开启事务

lined = update set A.money = A.money-100 where A.money >= 100

if(lined == 0) 

   return 没钱;

update set B.money = B.money+100

提交事务

看下这段代码是否有并发隐患

根据https://blog.csdn.net/silyvin/article/details/79294508 中的结论:

当前读(包含update等写入操作)锁定数据,直到事务提交

 

故不涉及到并发一致性问题,但是相当于分布式锁,悲观的,性能低

原文地址:https://www.cnblogs.com/silyvin/p/9106603.html