create trigger 调货_trig on dbo.调货表
after insert
as
begin
declare @a bit,@b bit
--判断是否是全部清空
  if exists (select 1 from wz_kc a,inserted b where a.药品编号=b.药品编号 and a.进价=b.进价 and a.产地=b.产地
and a.批号=b.批号 and a.数量=b.数量 and a.货位=b.调出货位)
  set @a=1
 else 
  set @a=0
--判断原来是否存在
  if exists(select 1 from wz_kc a,inserted b where a.药品编号=b.药品编号 and a.进价=b.进价 and a.产地=b.产地
and a.批号=b.批号 and a.货位=b.调入货位)
   set @b=1
 else
   set @b=0if @a=1 and @b=1
begin
  delete wz_kc from inserted where wz_kc.药品编号=inserted.药品编号 and wz_kc.批号=inserted.批号  and wz_kc.货位=inserted.调出货位
  update wz_kc  set wz_kc.数量=wz_kc.数量+inserted.数量  from inserted  where wz_kc.药品编号=inserted.药品编号 and wz_kc.批号=inserted.批号  and wz_kc.货位=inserted.调入货位
end
else if @a=0 and @b=1
  begin
    update wz_kc  set wz_kc.货位=inserted.调入地点,wz_kc.数量=wz_kc.数量+inserted.数量  from inserted  where wz_kc.药品编号=inserted.药品编号 and wz_kc.批号=inserted.批号 and wz_kc.货位=inserted.调入货位
    update wz_kc  set wz_kc.货位=inserted.调入地点,wz_kc.数量=wz_kc.数量-inserted.数量  from inserted  where wz_kc.药品编号=inserted.药品编号 and wz_kc.批号=inserted.批号 and wz_kc.货位=inserted.调出货位
  end
else if @a=1 and @b=0
     update wz_kc  set wz_kc.货位=inserted.调入地点  from inserted  where wz_kc.药品编号=inserted.药品编号 and wz_kc.批号=inserted.批号 and wz_kc.货位=inserted.调出货位
else if @a=0 and @b=0
  begin
    insert into wz_kc (序号,药品编号,药品名称,药品规格,单位,数量,进价,金额,中包装,包装,批号,产地,建议价,货位,客户名称)  select 序号,药品编号,药品名称,药品规格,单位,数量,进价,数量*进价,中包装,包装,批号,产地,建议价,调入地点,客户名称 from inserted    
    update wz_kc  set wz_kc.货位=inserted.调入地点,wz_kc.数量=wz_kc.数量-inserted.数量  from inserted  where wz_kc.药品编号=inserted.药品编号 and wz_kc.批号=inserted.批号 and wz_kc.货位=inserted.调出货位
  end
end

解决方案 »

  1.   

    --我写了注释,你仔细看看是不是这个意思???create trigger 调货_trig on dbo.调货表
    after insert
    as
    begin
    declare @a bit,@b bit--判断是否是全部清空
      if exists (select 1 from wz_kc a,inserted b 
    where a.药品编号=b.药品编号 and a.进价=b.进价 and a.产地=b.产地
    and a.批号=b.批号 and a.数量=b.数量 and a.货位=b.调出货位)
      set @a=1
     else 
      set @a=0
    --判断原来是否存在
      if exists(select 1 from wz_kc a,inserted b where a.药品编号=b.药品编号
     and a.进价=b.进价 and a.产地=b.产地 and a.批号=b.批号 and a.货位=b.调入货位)
       set @b=1
     else
       set @b=0if @a=1 and @b=1 --如果 是全部清空 且调入货位已经存在
    begin
      delete wz_kc from inserted where wz_kc.药品编号=inserted.药品编号 and wz_kc.批号=inserted.批号  and wz_kc.货位=inserted.调出货位
      update wz_kc  set wz_kc.数量=wz_kc.数量+inserted.数量  from inserted  where wz_kc.药品编号=inserted.药品编号 and wz_kc.批号=inserted.批号  and wz_kc.货位=inserted.调入货位
    end
    else if @a=0 and @b=1 --如果 不是全部清空 且调入货位已经存在
      begin
        update wz_kc  set wz_kc.货位=inserted.调入地点,wz_kc.数量=wz_kc.数量+inserted.数量  from inserted  where wz_kc.药品编号=inserted.药品编号 and wz_kc.批号=inserted.批号 and wz_kc.货位=inserted.调入货位
        update wz_kc  set wz_kc.货位=inserted.调入地点,wz_kc.数量=wz_kc.数量-inserted.数量  from inserted  where wz_kc.药品编号=inserted.药品编号 and wz_kc.批号=inserted.批号 and wz_kc.货位=inserted.调出货位
      end
    else if @a=1 and @b=0 --如果 是全部清空 调入货位不存在
         update wz_kc  set wz_kc.货位=inserted.调入货位  from inserted  where wz_kc.药品编号=inserted.药品编号 and wz_kc.批号=inserted.批号 and wz_kc.货位=inserted.调出货位else if @a=0 and @b=0 --如果 不是全部清空 调入货位不存在
      begin
        update wz_kc  set wz_kc.货位=inserted.调入地点,wz_kc.数量=wz_kc.数量-inserted.数量  from inserted  where wz_kc.药品编号=inserted.药品编号 and wz_kc.批号=inserted.批号 and wz_kc.货位=inserted.调出货位
        insert into wz_kc (序号,药品编号,药品名称,药品规格,单位,数量,进价,金额,中包装,包装,批号,产地,建议价,货位,客户名称)  select 序号,药品编号,药品名称,药品规格,单位,数量,进价,数量*进价,中包装,包装,批号,产地,建议价,调入地点,客户名称 from inserted    
      end
    end