数据异常
货物记录用的流水记录,但是有个用户没有这个货物但是数据库有一条-300的数据,提交做了数据库事务和锁表,看日志也没发现并发请求,不知道是哪儿写进去的,正常请求是会被打回的。
这个是数据结构,每次写入前我做了sum(num) 操作然后对比大小,所以这个-500怎么会写入的
这描述,谁能帮你
:flushed:
这怎么帮啊...
有些金额操作第一要有流水记录,还要有日志记录,记录谁操作的,几十操作的等等,还怕错可以加上缓存来做对比操作
你应该把对应这块金额操作的逻辑代码放出来
我没看到你必须要求传正整数的操作。我传个-500不过分吧
楼上的小伙伴说的,没看到必须是正整数(或者是正数)的要求,而且如果是金额的话,最好是指定位数的小数decimal,但是必须限制是正数;也可以是无符号的int,最小单位为1。
你确定你这个lockForUpdate真的锁住了嘛 :see_no_evil:
说个简单点的场景, 现有库存:800 第一个请求希望扣除:500 第二个请求希望扣除:600
请问 lockforUpdate 可以阻止他们得到相同的 800 库存么? 如果不可以,那么下面的流程是没问题的。 扣库存也是正确扣除的。
eg. 在我的印象里
lockForUpdate
是给事务提供使用的,如果我记错了,欢迎指正。