比如有张库存表 inv,有个字段物料 material,有个字段数量 qty,当然还有ID。
每次入库,先查找库存是否有这个物料,如果有的话,则数量需要加上去,如果不存在,需要生成一条这样的记录,包含物料以及数量。
我只是打个比方,这个在一般系统里面都会初始化的,没个物料都有一条默认的数量为0的记录,我就不说了。
如果不能初始化,我需要动态的添加,则情况如下,比如 M1物料入库10公斤
如果存在 就数量加 不存在就新加一行
if(inv exists 'M1') {
update inv set qty=qty+10 where material='M1'
}else{
insert inv (material,qty) values ('M1',10)
}
如果并发的话,比如 人员A、B同时做入库单
A 执行 查看 exists 时间为t1
B 执行 查看 exists 时间为t2
A 执行 查看 insert 时间为t3
B 执行 查看 insert 时间为t4
t1<t2<t3<t4,如果刚好遇到这样的情况,大家查的时候都不存在,每个人都入了,怎么办,处理这种情况,这样导致物料M1存在2条数据,当然 可以对物料进行唯一索引,但是这样B插入就会报错,请问大家有什么办法让这种情况不发生,不能唯一索引,也不能lock table,谢谢
慕莱坞森
牧羊人nacy
相关分类