数据异常

货物记录用的流水记录,但是有个用户没有这个货物但是数据库有一条-300的数据,提交做了数据库事务和锁表,看日志也没发现并发请求,不知道是哪儿写进去的,正常请求是会被打回的。

数据异常
这个是数据结构,每次写入前我做了sum(num) 操作然后对比大小,所以这个-500怎么会写入的

路漫漫其修远兮,吾将上下而求索
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 22

这描述,谁能帮你

1年前 评论
lddtime 1年前
pi_phq (楼主) 1年前
GalaxyNo_1

:flushed:

1年前 评论

这怎么帮啊...

1年前 评论
pi_phq (楼主) 1年前

有些金额操作第一要有流水记录,还要有日志记录,记录谁操作的,几十操作的等等,还怕错可以加上缓存来做对比操作

1年前 评论
pi_phq (楼主) 1年前

你应该把对应这块金额操作的逻辑代码放出来

1年前 评论
陈先生

我没看到你必须要求传正整数的操作。我传个-500不过分吧

1年前 评论
pi_phq (楼主) 1年前

楼上的小伙伴说的,没看到必须是正整数(或者是正数)的要求,而且如果是金额的话,最好是指定位数的小数decimal,但是必须限制是正数;也可以是无符号的int,最小单位为1。

1年前 评论

你确定你这个lockForUpdate真的锁住了嘛 :see_no_evil:

1年前 评论
陈先生

说个简单点的场景, 现有库存:800 第一个请求希望扣除:500 第二个请求希望扣除:600

请问 lockforUpdate 可以阻止他们得到相同的 800 库存么? 如果不可以,那么下面的流程是没问题的。 扣库存也是正确扣除的。

eg. 在我的印象里 lockForUpdate 是给事务提供使用的,如果我记错了,欢迎指正。

1年前 评论
pi_phq (楼主) 1年前
陈先生 (作者) 1年前
pi_phq (楼主) 1年前
陈先生 (作者) 1年前
pi_phq (楼主) 1年前
  $validator = Validator::make($request->all(), [
        'id' => ['required'],
        'num' => ['required', 'min:1','integer'],
        'type' => ['required', 'in:1,2']
    ]);
    if ($validator->fails()) {
        return $this->error($validator->errors()->first());
    }
    $request->num = intval($request->num) ?? 0;

    if ($request->num <= 0) {
        return $this->error('fail');
    }
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!