发货时检验先库存是否足够,另外设置锁标识,如LockFlag 默认0,启动发货事务时,先判断是否LockFlag = 1,如果成立,则等待,等LockFlag = 0再进入事务,设置LockFlag = 1,事务结束,LockFlag = 0

解决方案 »

  1.   

    用约束关键是删除进仓记录时会出错,因为after触发器会先检查约束条件!!!
    期待更好的解决方案!!!
      

  2.   

    在sp中加入
    1>控制不给开
    if exists (select 1 from stock表 where 物料编号=@物料编号 and  Qty<@发货数)
    return 2>控制只能开可开数(在存储过程最前加上)
    declare @canQty decimal(18,3)
    select top 1 @canQty =Qty from stock表  where 物料编号=@物料编号
    if (@canQty <@发货数)
    set @发货数=@canQty ---