VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 777|回复: 8

sql server update触发器 加减问题

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-27 19:40:01 | 显示全部楼层 |阅读模式
有两个表:
table1(id,amount)
table2(id,sum)

我想得到一个update触发器,当table1.amount改变时,table2.sum也改变。


table1.amount增加或着减少多少table2.sum也增加或着减少多少
table1.amount不等于table2.sum
table1.amount的累加也不是table2.sum
回复

使用道具 举报

0

主题

34

帖子

17.00

积分

新手上路

Rank: 1

积分
17.00
发表于 2020-2-22 11:15:02 | 显示全部楼层
create trigger 触发名 on table1
instead of update
as

   --update更新
   declare @old,@new int
   if exists(select 1 from inserted) and exists(select 1 from deleted)
   begin
        set  @old=(select amount from deleted)
        set  @new=(select amount from inserted)
        update table2 set sum=sum+@new-@old where id=(selelct id from inserted)
   end

go
回复

使用道具 举报

0

主题

49

帖子

35.00

积分

新手上路

Rank: 1

积分
35.00
发表于 2020-2-22 11:30:01 | 显示全部楼层
create trigger t_update on table1
for update
as
begin
update t2 set t2.sum = t2.sum + t1.addamount
from table2 t2 inner join
(select a.id,b.amount - a.amount as addamount
from deleted a inner join inserted b on a.id = b.id)
t1 on t1.id = t2.id
end
go
回复

使用道具 举报

0

主题

34

帖子

17.00

积分

新手上路

Rank: 1

积分
17.00
发表于 2020-2-22 13:45:01 | 显示全部楼层
table1.amount不等于table2.sum
table1.amount的累加也不是table2.sum
-----------??这是干什么?
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-2-22 18:30:02 | 显示全部楼层
table1.amount不等于table2.sum
table1.amount的累加也不是table2.sum
-----------??这是干什么?


需求就是这样的,没原因,我试试,太谢谢你们了
回复

使用道具 举报

0

主题

30

帖子

25.00

积分

新手上路

Rank: 1

积分
25.00
发表于 2020-2-22 20:30:01 | 显示全部楼层
create  trigger  t_1  on  table1  for  update  
as  
select  inserted.ID,diff=deleted.amount- inserted.amount  into  #tmp  
from  deleted,inserted  
where  deleted.ID=inserted.ID

update  table2  
set  sum=sum+#tmp.diff  
from table2,#tmp  
where table2.ID=#tmp.ID
go
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-2-23 13:00:01 | 显示全部楼层
谢谢各位了
回复

使用道具 举报

0

主题

30

帖子

25.00

积分

新手上路

Rank: 1

积分
25.00
发表于 2020-2-23 14:45:01 | 显示全部楼层
更正:
create  trigger  t_1  on  table1  for  update  
as  
select  inserted.ID,diff=inserted.amount-deleted.amount  into  #tmp  
from  deleted,inserted  
where  deleted.ID=inserted.ID

update  table2  
set  sum=sum+#tmp.diff  
from table2,#tmp  
where table2.ID=#tmp.ID
go
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-3-2 17:45:01 | 显示全部楼层
up,原来 instered,deleted两表有这样的好处 啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表