create trigger instb on sc_stocks
for insert as 
update kclb
set 库存数量=k.库存数量+i.数量*m.类型
from stockM m,inserted i,kclb k
where i.partid=k.partid 
and m.djid=i.djid

解决方案 »

  1.   

    create trigger tri_ttt on stocks for
    insert,update
    as 
    begin 
    update kcl set 数量=数量+sotcks.数量*stockM.类型 from stockM,stocks,inserted where  stockM.djid=stocks.djid and stocks.产品=kcl.产品
      

  2.   

    上面错了:
    create trigger tri_ttt on stocks for
    insert,update
    as 
    begin 
    update kcl set 数量=数量+sotcks.数量*stockM.类型 from stockM,stocks,klb,inserted where  stockM.djid=stocks.djid and stocks.产品=kcl.产品 and stocks.产品=inserted.产品
      

  3.   

    create trigger instb on sc_stocks
    for 
    insert,update
    as 
    update kclb
    set
    库存数量=K.库存数量+I.数量*M.类型
     
    from stockM m,STOCKS i,kclb k
    where i.partid=k.partid 
    and m.djid=i.djid
      

  4.   

    create trigger instb on sc_stocks
    for 
    insert,update
    as 
    update kclb
    set
    库存数量=K.库存数量+I.数量*M.类型
     
    from stockM m,STOCKS i,kclb k
    where i.partid=k.partid 
    and m.djid=i.djid
      

  5.   

    首先,我非常感谢大家!稍后再给分……
    我试过 Yang_(扬帆破浪)的那个触发器能成功的!
      

  6.   

    你的这个业务用触发器实现比较困难,建议你还是在client端的代码中解决这个问题。因为你不能光考虑insert,还有update,delete,你的触发器必须要考虑这三种情况.
      

  7.   

    非常感谢大家!
    我试用了 Yang_(扬帆破浪) 给的那个,已成功了!
    j9988(j9988) 给的那个触发器也能成功,再次感谢!
    我准备结贴给分了!!听说触发器占资源很大?是否属实?
      

  8.   

    Yang_(扬帆破浪)兄:
    呵呵,我现在感觉行了,还没看出问题?要是删除、或更新一个stockS的记录!是否要另写多一个TRIGGER?
      

  9.   

    由于你的产品是可以重复的,所以上面的触发器在一次插入多条记录的时候会产生错误,应该改为:
    create trigger instb on sc_stocks
    for insert as select i.partid,sum(i.数量*m.类型) as 数量 into #Temp from inserted i,stockM m
    where m.djid=i.djid
    group by i.partidupdate kclb
    set 库存数量=k.库存数量+t.数量
    from #Temp t,kclb k
    where t.partid=k.partid insert kclb(partid,库存数量)
    select partid,数量 from #Temp t
    where not exists (
     select * from kclb k
      where k.partid=t.partid
      )
    go
      

  10.   

    删除、或更新一个stockS的记录是要另写UPDATE,DELETE触发器,或者就修改这个触发器。
      

  11.   

    而我现在还想在kclb里分开年、月的库存来,这样一来,这个TRIGGER又更加复杂了!正在琢磨…………
      

  12.   

    那句INSERT是考虑可能你的产品在库存里没有(新产品)的情况。
      

  13.   

    我要在KCLB表里加上一个年字段,月字段,即是分为有月份库存和年份库存了,这样这个TRIGGER就更复杂了!各位朋友,我这样的库存结构会不合理吗?有没更好的库存数据表设计方法?
      

  14.   

    一张入(出)库单中,STOCKS字表中产品控制不能重复,但如在KCLB里加上年、月的库存记录时,在KCLB里产品会重复,这样TRIGGER能不能搞掂!UPDATE触发器、DELETE触发器、INSERT触发器是否一定要写成独立的,可否写成一个触发器?
      

  15.   

    非常感谢! Yang_(扬帆破浪)