物料表  (物料编号 ,物料名,库存量)
    收货单表(收货单号,物料编号,物料名,收货量)
   我想请问一下,如果建立一个触发器,(1)当我的物料表中物料名发生变化,收货单表的物料名也随着发生变化。
                                     (2)当我从系统中添加收货单时,库存量随着发生变化,比如物料表中有这样一条记录
                                        M001  纽扣 100
                                  当我输入新的收货单,R003 M001 纽扣 50,输进去之后物料表中的记录就变成,
                                        M001  纽扣  150。
请高手指教,小弟先谢了!
      

解决方案 »

  1.   

    1:
    CREATE trigger test on 物料表
    for update
    as 
    declare @oldname char(20)
    declare @newname char(20)
    select @oldname=name from deleted
    select @newname=name from inserted
    if(@newname<>@oldname)
    begin
      update 收货单表 set 物料名=@newname where 物料名=@oldname
    end
    2:
    CREATE trigger test2 on 收货单表
    for insert
    as 
    declare @sum char(20)
    declare @namechar(20)
    select @name=name from inserted
    begin
      update 物料表 set 库存量=库存量+@sum where 物料名=@name
    end
      

  2.   

    1: 
    CREATE trigger test on 物料表 
    for update 
    as 
    declare @oldname char(20) 
    declare @newname char(20) 
    select @oldname=物料名from deleted 
    select @newname=物料名 from inserted 
    if(@newname <>@oldname) 
    begin 
      update 收货单表 set 物料名=@newname where 物料名=@oldname 
    end 
    2: 
    CREATE trigger test2 on 收货单表 
    for insert 
    as 
    declare @sum char(20) 
    declare @namechar(20) 
    select @name=物料名 from inserted 
    select @sum=收货数量 from inserted 
    begin 
      update 物料表 set 库存量=库存量+@sum where 物料名=@name 
    end