触发器的问题,请前辈指点!!

salecn 2007-09-01 11:56:06
教材库存(表)
教材编号 教材名称 教材数量
a001 软件工程 100

教材发放(表)
学号 姓名  班级 教材编号 教材名称 是否领取
20070001 张三 1班 a001 软件工程 否
20070002 李四 2班 a001 软件工程 否
20070003 王五 2班 a001 软件工程 否

目的:想实时显示"教材库存"中的教材数量。也就是说 教材发放 表中,把 是否领取 把是改为否,把否改为是  在教材库存中的教材数量就相应的加1或减1。

问题:我用触发器来解决这问题,单个修改某条记录的 是否领取 字段可以实现,但把某一个班 的是否领取字段 改为 是(update 教材发放 set 是否领取='是' where 班级='2班'),就不行了。


这问题怎么解决,请前辈指点,小弟不胜感激!!
...全文
128 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Limpire 2007-09-02
  • 打赏
  • 举报
回复
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
salecn 2007-09-02
  • 打赏
  • 举报
回复
无限感谢  Limpire(昨夜小楼)!!  解决一个期困扰我的问题!!

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧