现在在设计一个库存管理的程序。出库的时候存在并发的问题,
两个客户端A和B, 同时进行货品SKU001的出库操作,
库存表INVENTORY中数量为100,A和B同时出60,这样的话,只能有一个客户端可以完成此次操作。 请问如何来控制上面的并发操作?
还是交给数据库去处理? 如果用交易来处理的话,意味着,最先保存的客户端获得保存,而其它的客户端将回滚。
而我想,当两个客户端准备去修改一条库存记录时,系统保存最先开始的那个客户端的操作。这是否意味着,当一个客户端准备改动这条记录时,应该手工将这条记录锁定?
两个客户端A和B, 同时进行货品SKU001的出库操作,
库存表INVENTORY中数量为100,A和B同时出60,这样的话,只能有一个客户端可以完成此次操作。 请问如何来控制上面的并发操作?
还是交给数据库去处理? 如果用交易来处理的话,意味着,最先保存的客户端获得保存,而其它的客户端将回滚。
而我想,当两个客户端准备去修改一条库存记录时,系统保存最先开始的那个客户端的操作。这是否意味着,当一个客户端准备改动这条记录时,应该手工将这条记录锁定?
1 比如A B两个人分别入库自己购买的同一种物品,大家只是添加和减少,可以不报错,直接save后全部运行将 100+60+60=220
2 如果是并发更改,应该是报错,让用户来决定是否进行觉得最好都用报错回滚,由用户决定是否再重新开始事务
2 但1可能造成修改数据的进程饿死,所以,查询以后最好马上打开锁,而在修改的时候用独占锁(最好是行级锁)可以防止其他进程在修改过程中对该纪录的访问