找回密码
 立即注册

QQ登录

只需一步,快速开始

phoben 讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2024-11-10 13:09  /   查看:129  /  回复:6
本帖最后由 Brian.Zhang 于 2024-11-13 20:31 编辑
  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

6 个回复

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

两个人一起取值都是100,其中一个人+1变成101,第二个人再更新,还会是101,官方有一个“并发控制策略”,通过乐观锁去判断,但是这样逻辑就比较麻烦,如果直接用字段+1就比较容易解决
回复 使用道具 举报
Brian.Zhang
超级版主   /  发表于:2024-11-13 20:29:33
地板
已采纳。
回复 使用道具 举报
0.618
金牌服务用户   /  发表于:2024-11-14 08:27:31
5#
同样需求
回复 使用道具 举报
小侠米
论坛元老   /  发表于:7 天前
6#

同需求。
确实可以简化逻辑运算的复杂都,增强数字准确性
回复 使用道具 举报
Brian.Zhang
超级版主   /  发表于:7 天前
7#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部