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