找回密码
 立即注册

QQ登录

只需一步,快速开始

phoben 讲师达人认证 悬赏达人认证 活字格认证

论坛元老

424

主题

1729

帖子

4747

积分

论坛元老

格友工作室

积分
4747

时代开发者征文活动微信认证勋章悬赏达人讲师达人活字格认证活字格高级认证

QQ
phoben 讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2024-11-10 13:09  /   查看:58  /  回复:2
本帖最后由 phoben 于 2024-11-10 13:13 编辑
  1. -- 增加库存数量  
  2. UPDATE inventory SET quantity = quantity + delta WHERE sku = 'SKU123';  

  3. -- 减少库存数量(并确保库存不为负数)  
  4. UPDATE inventory SET quantity = quantity - delta WHERE sku = 'SKU123' AND quantity >= delta;
复制代码



在一些库存操作、金额操作等敏感场景下,为了确保并发时的数量增减不出现问题,需要用到这种原子性的操作。
例如上面代码中,就使用了 "quantity + delta",让数据库更新的值为“本身值”+“增加值”
在活字格中一直无法实现这一点,之前也 提到过类似需求,但是一直没有得到重视,希望大佬们能重视一下这种数据库的基础特性,有些场景可能绕不开。


建议如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

2 个回复

倒序浏览
mfkpie8
银牌会员   /  发表于:3 天前
沙发
支持+1  这个是正常的逻辑,之前我也提过的。他们说先取值然后再赋值的逻辑!我觉得这样才是 减少很多变量的问题
回复 使用道具 举报
phoben讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:3 天前
板凳
mfkpie8 发表于 2024-11-10 13:15
支持+1  这个是正常的逻辑,之前我也提过的。他们说先取值然后再赋值的逻辑!我觉得这样才是 减少很多变量 ...

两个人一起取值都是100,其中一个人+1变成101,第二个人再更新,还会是101,官方有一个“并发控制策略”,通过乐观锁去判断,但是这样逻辑就比较麻烦,如果直接用字段+1就比较容易解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部