我遇到了一个逻辑问题。我的触发器是:
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的点。
但同样的结果没有任何反应 请告诉我怎么做。 提前谢谢
答案 0 :(得分:-1)
变化
select @postedby = PostedBy from Posts
到
select @postedby = PostedBy from INSERTED
' INSERTED'是一个魔术表,可以在此范围内保留插入/更新的数据。 与此相同' DELETED'表将先前的数据保存在更新行中