插入/更新触发器更新所有行的列值

时间:2015-12-28 10:58:07

标签: asp.net sql-server asp.net-mvc triggers

我遇到了一个逻辑问题。我的触发器是:

 create trigger Points1
 on Posts
 after insert, update
 As
 declare @value int
 declare @postedby int
 select @value= Count(Message) from Posts
 select @postedby = PostedBy from Posts

update AspNetUsers set User_points = @value * 3
where ( AspNetUsers.Id = @postedby)

我不知道我是否正确行事。

两个表:具有User_points列的AspNetUsers表和作为主键的Id列

将PostId作为主键发布,PostBy作为引用AspNetUsers表的外键。

现在,我想比较PostedBy和Id列,如果它们都相同,那么在他发布的每条消息上用+3更新User_Points列。

现在,问题是: 1 GT;它在每一行中插入相同数量的点。它应该只检查当前插入的行和该行的PostedBy列,然后与其他表的Id列进行比较,并且应该更新用户只有那个Id的点。

但同样的结果没有任何反应 请告诉我怎么做。 提前谢谢

1 个答案:

答案 0 :(得分:-1)

变化

select @postedby = PostedBy from Posts 

select @postedby = PostedBy from INSERTED

' INSERTED'是一个魔术表,可以在此范围内保留插入/更新的数据。 与此相同' DELETED'表将先前的数据保存在更新行中