触发器能实现吗???

iamxia 2002-09-09 09:44:06
TABLE A(ID INT, TOTALNUM INT)
TABLE B(ID INT, NAME CHAR(10), NUM INT)

TABLE A 的内容
1, 0
2, 0
3, 0
4, 0

现在的要求是如何写触发器,使得当TABLE B更新或新增时候,能够将B中NUM累加到TABLE A的相应记录中,用ID关联。
TABLE B单个记录的更新或新增很容易,问题是当有多个记录的时候怎么做?
注:每次改动TABLE B中的记录的ID都是相同的
...全文
34 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yang_ 2002-09-10
  • 打赏
  • 举报
回复
写少了扩号!

create trigger tr_b_All
on b
for insert,update,delete
as

declare @A TABLE (ID INT, TOTALNUM INT)
declare @ASum TABLE (ID INT, TOTALNUM INT)

insert @a
select id,NUM
from inserted
union all
select id,-NUM
from deleted

insert @aSum
select id,sum(TOTALNUM)
from @a
group by id

update a
set TOTALNUM=a.TOTALNUM+t.TOTALNUM
from a,@ASum t
where a.id=t.id

insert a(id,TOTALNUM)
select id,TOTALNUM
from @ASum t
where not exists (
select 1 from a
where a.id=t.id
)
go

iamxia 2002-09-10
  • 打赏
  • 举报
回复


我在UPDATE中不能用TABLE变量?提示必须先声明。奇怪中...
Yang_ 2002-09-09
  • 打赏
  • 举报
回复
每次改动TABLE B中的记录的ID相同和不相同都是可以的。

Yang_ 2002-09-09
  • 打赏
  • 举报
回复
能:

create trigger tr_b_All
on b
for insert,update,delete
as

declare @A TABLE ID INT, TOTALNUM INT)
declare @ASum TABLE ID INT, TOTALNUM INT)

insert @a
select id,NUM
from inserted
union all
select id,-NUM
from deleted

insert @aSum
select id,sum(TOTALNUM)
from @a
group by id

update a
set TOTALNUM=a.TOTALNUM+t.TOTALNUM
from a,@ASum t
where a.id=t.id

insert a(id,TOTALNUM)
select id,TOTALNUM
from @ASum t
where not exists (
select 1 from a
where a.id=t.id
)
go

34,575

社区成员

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

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