教材库存(表)
教材编号 教材名称  教材数量
a001      软件工程   100教材发放(表)
学号      姓名  班级  教材编号   教材名称     是否领取
20070001  张三    1班   a001       软件工程     否
20070002  李四    2班  a001       软件工程     否
20070003  王五    2班   a001       软件工程     否目的:想实时显示"教材库存"中的教材数量。也就是说  教材发放 表中,把 是否领取 把是改为否,把否改为是  在教材库存中的教材数量就相应的加1或减1。问题:我用触发器来解决这问题,单个修改某条记录的 是否领取 字段可以实现,但把某一个班 的是否领取字段 改为 是(update 教材发放 set 是否领取='是' where 班级='2班'),就不行了。 
这问题怎么解决,请前辈指点,小弟不胜感激!!

解决方案 »

  1.   

    create trigger tr_test
    on 教材发放表
    for update
    as
    set nocount on
    if update(是否领取)
    begin
    update m set m.教材数量 = m.教材数量+n.数量
    from 教材库存表 m,
    (select a.教材编号,数量=sum(case when a.是否领取='否' and b.是否领取='是' then 1 when a.是否领取='是' and b.是否领取='否' then -1 else 0 end) from deleted a join inserted b on a.学号=b.学号 group by 教材编号) n
    where m.教材编号=n.教材编号
    end
    set nocount off
    go
      

  2.   

    无限感谢  Limpire(昨夜小楼)!!  解决一个期困扰我的问题!!