标题:【求助】触发器问题:在A表新增、修改、删除记录后,B表相应的计算数量
只看楼主
laidly
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-4-24
结帖率:0
 问题点数:0 回复次数:4 
【求助】触发器问题:在A表新增、修改、删除记录后,B表相应的计算数量
表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
搜索更多相关主题的帖子: 触发器 记录 如何 
2013-11-20 18:40
无语1
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-1-10
得分:0 
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
2014-01-20 17:11
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
得分:0 
其实这种业务处理的思路很多种,看你怎么实现。
比如你在处理insert, update, delete A表的同时处理 处理B表。
当时如果考虑脏数据的处理,可以通过存储过程事务控制并发性;也可以实现你的逻辑。

大家都是朋友,有空就来坐坐!
2014-01-22 16:30
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
得分:0 
用到触发器是完全是依赖了微软的SQLServer了;对以后程序的优化和升级等等维护增加了难度;

大家都是朋友,有空就来坐坐!
2014-01-22 16:31
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
得分:0 
所以我一般不建议用触发器;

大家都是朋友,有空就来坐坐!
2014-01-22 16:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-423884-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023095 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved