注册 登录
编程论坛 SQL Server论坛

【求助】触发器问题:在A表新增、修改、删除记录后,B表相应的计算数量

laidly 发布于 2013-11-20 18:40, 588 次点击
表A: ID    WL    SL
       1      A      2
       2      B       3
       3      C      2
       4      A       3
       5      B      2
       6      C       3
表B:   ID   WL    ZL
        1      A      5
        2     B       5
        3     C       5

如上所示,表A添加、修改或删除记录后,表B的相应WL的ZL等表A相应WL的总量之和。请问,用触发器如何做到,谢谢。

PS:当在表A中添加WL='A',SL=1时,表B的A记录ZL自动更新为6

当在表A中修改第2条记录WL='B',SL=1时,表B的B记录ZL自动更新为4

当在表A中删除第6条记录C时,表B的C记录ZL自动更新为2
4 回复
#2
无语12014-01-20 17:11
create trigger trigindeup on aa
for insert,update,delete as
declare @wl nvarchar(20),@sl int
select @wl=wl,@sl=sl from inserted
if @wl is not null
begin
update bb set zl=zl+@sl where wl=@wl
set @wl=null
set @sl=null
end

select @wl=wl,@sl=sl from deleted
if @wl is not null
begin
update bb set zl=zl-@sl where wl=@wl
set @wl=null
set @sl=null
end

insert into aa values('a',2)
delete from aa where id=8
update aa set sl=1 where id=6


这样可以,你试一下把你的表名改成了 A-aa  B-bb
#3
volte2014-01-22 16:30
其实这种业务处理的思路很多种,看你怎么实现。
比如你在处理insert, update, delete A表的同时处理 处理B表。
当时如果考虑脏数据的处理,可以通过存储过程事务控制并发性;也可以实现你的逻辑。
#4
volte2014-01-22 16:31
用到触发器是完全是依赖了微软的SQLServer了;对以后程序的优化和升级等等维护增加了难度;
#5
volte2014-01-22 16:32
所以我一般不建议用触发器;
1