老生常谈:数据并发!!!你也会遇到的!
物料领用单:
PO2012050500025:
----------------
铅笔10
橡皮20
直尺5
-----------------------------------
提交后,需要审批:
流程如下:
A-B-C
-----------------------------------
A、B都通过。
C点通过,先查库存,看库存是否充足。
是:单据完成。扣除相应库存数量。
否:提示因库存不足,审批失败。
-----------------------------------
并发出现点:查完库存后(库存充足)。更新。
详细说明:
步骤1.C点通过,先查库存。结果三样东西库存都是充足的。
步骤2.然后程序执行更新操作。
但在步骤1和步骤2中间。由于其它原因使库存不足(如其它人先领用了)。这样就出现了负库存。
正常解决方法:
1.说服客户允许负库存。
2.操作完成后给出提示,实际领用数量(原因)。
3.数据库加数据锁。
首先排除1和2.因为我这客户明确说明不同意。
再说3. 个人对锁不是很了解。以下是个人观点:
首先,有锁就要有等待,比如我在领用时,必然这条数据会被锁掉,那么我如果正好有这个东西要入库呢?而实际生活中,入库和出库并不冲突的。
其次,客户网络环境较差,而且我都是很多条数据一起更新的(最笨的sql拼接),我不知道这会不会导致死锁。如果会,下面就免谈了。
最后,就是等待,我加了锁,然后解锁,这个过程是要我手动设置的还是会自动解锁。据我所知应该是会自动解锁的。那么页面上呢?告知用户一会再试,还是后台定个方法在那等待执行?
求一个实际可行的解决方案。
没分了,就这么点了,请各位谅解。