java 分布式 springcloud项目 数据库是mysql,我现在有一张产品库存表, 里面有多个产品,每行记录了这个产品的详情( ID 代码 名称 类型 库存量)
产品库存表 同一个产品只会存在一条记录。
产品库存表 大致结构
create table 产品库存表 (
id ..
产品代码..
产品名称..
产品类型..
库存量..
是否有效
修改时间
创建时间
)
现在前端页面有个操作,大致就是将这些产品 分到一个产品包里 这个产品包 就是一个选择了不同产品和其数据的产品集合
产品包分配表另建的一张表
create table 产品包分配统计表(
id
产品包名称
产品包 ID
创建时间
是否有效
)
产品包明细表
create table 产品包分配统计表(
id
产品名称,
产品 ID ,
产品分配数量。
产品包名称
产品包 ID
创建时间
是否有效
)
简而言之,就是从 创建一个产品包 包含多个产品, 自己指定分配的产品数量,
所以 我从 产品的主库存 扣除分配给产品包的产品库存的时候, 需要保证这些产品修改 同时成功和失败,这样我好控制并发。
update 产品表 set 产品库存 = 产品库存 - 分配数量 where 产品库存 > 分配数量
这是一条产品更新的 语句,我现在想让 这些选了的产品 更新操作 同时成功,或者同时不执行,
我尝试 将多个 update 放在一行执行
update 产品表 set 产品库存 = case 条件(产品类型) when xxx then 对应的数量
when xxx then 对应的产品数量
...
end
when 产品库存 > case 产品类型 when xxx then 对应的数量
update 语句 条件不成立的时候 只会 让影响的行数 是 0 ,从而让满足条件的执行了,没满足的没执行。
各位有什么好办法吗