@jfinal
呼叫大佬
库存表A:
仓库名称、存货名(id)、数量
仓一、 小米、 100 (已有100)
进货单(单号:0001)填写:
仓库名称、存货名(id)、数量
仓一、 小米、 10 (要添加10个库存)
提后:
仓库名称、存货名(id)、数量
仓一、 小米、 110 (添加后100)
进货单(单号:0001):
仓库名称、存货名(id)、数量
仓一、 小米、 10 -> 20 (10改成20个库存)
更新后:
仓库名称、存货名(id)、数量
仓一、 小米、 120 (更新后120)
我设计逻辑请问有问题:
1、第一次保存添加,用行锁 update 库存表A set count = count + ? where 版本号 version + 1,确保库存添加成功。
2、更新的逻辑,先读取数据库0001订单减去原来10个,再添加新提交的20个,这个逻辑问题吗?是两个事务?请问正确姿势应该怎么样?
我想到的写法:
开启事务:
Db.tx(new IAtom(){
public boolean run(){
for(数据库查询的0001订单){
通过 行锁 update 库存表A set count = count - ?(原来0001订单的数量) and version + 1 where 仓库名称 = ? and 存货名(id) = ? and 版本号 version
}
for(新添加的001订单){
通过 行锁 update 库存表A set count = count - ?(post接收0001订单的数量) and version + 1 where 仓库名称 = ? and 存货名(id) = ? and 版本号 version
}
}
})