insert with update的sql insert触发器

j0pj023g  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(392)

我有两张table:
[1] 捐赠-带金额和宠物id字段
[2] 宠物-带id和捐款总额字段
我正在尝试创建一个触发器,每当一个新行被插入到捐赠表中时,它都会更新total generations字段。我试过这个:

create trigger update_donations
on sponserships
for insert
as
   update dbo.Pets 
   set tot_donations = (
      select new_val = inserted.amount + pets.tot_donations
      from inserted
      where inserted.[Pet-ID] = pets.[Animal-ID]
   )

当然,它会更改所有记录,而我只想更改捐款表中更改的记录。

wd2eg0qa

wd2eg0qa1#

存储这种类型的派生信息通常不是一个好的做法—您可以有一个动态计算它的视图,而不是一个使它保持最新的触发器。另外请注意,如果你走那条路,你还需要一个 delete 和一个 update 触发。。。
也就是说,您可以在 insert 用于更新pets表中相关记录的触发器:

update p
set p.total_donations = p.total_donations + i.amount    
from dbo.Pets p
inner join inserted i on i.[Pet-ID] = p.[Animal-ID]

相关问题