【FORGUNCY-16093】如何在活字格中对数据库进行原子性更新?
本帖最后由 Brian.Zhang 于 2024-11-13 20:31 编辑-- 增加库存数量
UPDATE inventory SET quantity = quantity + delta WHERE sku = 'SKU123';
-- 减少库存数量(并确保库存不为负数)
UPDATE inventory SET quantity = quantity - delta WHERE sku = 'SKU123' AND quantity >= delta;
在一些库存操作、金额操作等敏感场景下,为了确保并发时的数量增减不出现问题,需要用到这种原子性的操作。
例如上面代码中,就使用了 "quantity + delta",让数据库更新的值为“本身值”+“增加值”
在活字格中一直无法实现这一点,之前也 提到过类似需求,但是一直没有得到重视,希望大佬们能重视一下这种数据库的基础特性,有些场景可能绕不开。
建议如下:
支持+1这个是正常的逻辑,之前我也提过的。他们说先取值然后再赋值的逻辑!我觉得这样才是 减少很多变量的问题 mfkpie8 发表于 2024-11-10 13:15
支持+1这个是正常的逻辑,之前我也提过的。他们说先取值然后再赋值的逻辑!我觉得这样才是 减少很多变量 ...
两个人一起取值都是100,其中一个人+1变成101,第二个人再更新,还会是101,官方有一个“并发控制策略”,通过乐观锁去判断,但是这样逻辑就比较麻烦,如果直接用字段+1就比较容易解决 已采纳。 同样需求 Brian.Zhang 发表于 2024-11-13 20:29
已采纳。
同需求。
确实可以简化逻辑运算的复杂都,增强数字准确性 0.618 发表于 2024-11-14 08:27
同样需求
:loap1:
页:
[1]