支付回调偶然出现没有更改订单状态,造成微信请求一直发送
来源:10-31 事务与锁防止多次减库存
慕盖茨8017619
2019-10-01
老师,你好,按你的课程我们进行了一个实际业务的运行,当客户支付成功后,会进入回调,更改订单状态和减掉库存量,还有一个是我们业务需求以邮件形式告诉业务员有人下单,目前偶尔会出现订单状态没有改变,同一个订单持续发送多封相同邮件给业务员。从理论上来说不管无论如何都会进入updateOrderStatus的函数更改订单状态,但数据库有时候就会出现订单状态没有改变,我猜想会不会是数据库被锁住了造成无法更改,也就是在更改订单状态的时候下一个微信请求正好进来查询订单数据库(它们是同一个数据表),查询数据库的代码是有lock锁的,但更改数据库的代码是没有lock锁的(老师可以看一下源代码),同一个订单号,一个函数锁住了,另一个函数却要更新,冲突造成无法改变订单状态,请老师帮忙看一下有没有可能是这个情况,以及如何修改,非常感谢
写回答
1回答
-
7七月
2019-10-01
这个锁怎么回把整个表锁住?这种情况,首先是需要进行代码测试,而不是感觉。锁只会在update的时候锁住,而且即使锁住了后续有update的语句也会等待结束后执行。
0142019-10-08