当前位置: 代码迷 >> Sql Server >> 触发器怎么限制负库存
  详细解决方案

触发器怎么限制负库存

热度:225   发布时间:2016-04-24 08:44:55.0
触发器如何限制负库存
我们在前台有判断库存,但有时因为并发,偶尔还会出现负库存。请教一下,如何在触发器限制负库存
以下是我的sql触发器代码
CREATE TRIGGER xs_fhdmx_inserte  ON dbo.xs_fhdmx 
FOR insert 
as 
 begin
 

update wz_sj_kc set kcs = isnull ( kcs , 0 ) -  isnull ( a.shl ,  0 ) , zl = isnull ( wz_sj_kc.zl , 0 ) -  isnull ( a.zl ,  0 )     , updrq = getdate() 
from wz_sj_kc ,
(select mx_ckid , wlbh ,   sum( case when sajie ='0' then dws else 1 end * shl ) as shl , 
             sum( isnull(pczl,0 ) + zk  ) as zl  
 from inserted as a  
 where  mx_ckid <> ''
 group by mx_ckid , wlbh 
) as a
where wz_sj_kc.ck_id = a.mx_ckid and 
wz_sj_kc.wlbh = a.wlbh       ;   

insert  into wz_sj_kc(ck_id , wlbh  , kcs , zl  , updrq)
select mx_ckid , wlbh ,   0 -  sum( case when sajie ='0' then dws else 1 end * shl )   , 0 - sum( isnull(pczl,0 ) + zk )  , getdate()
 from inserted as a  
 where mx_ckid <> '' and
  not exists (select 1 from wz_sj_kc where wz_sj_kc.ck_id = a.mx_ckid and wz_sj_kc.wlbh = a.wlbh   )   
 group by mx_ckid , wlbh   ; 
    
end




------解决思路----------------------
你这个治标不治本阿。
应该解决并发的问题。

------解决思路----------------------
楼主把解决问题的方法寄希望于触发器,那没有触发器的数据库难道就不能用了吗?
解决方案应该是用事务来解决并发的问题.
  相关解决方案