转账业务场景

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等写入操作)锁定数据,直到事务提交

 

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

 

posted on 2018-04-18 13:14  silyvin  阅读(200)  评论(0编辑  收藏  举报