Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 插入/更新触发器更新所有行的列值_Asp.net_Sql Server_Asp.net Mvc_Triggers - Fatal编程技术网

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

Asp.net 插入/更新触发器更新所有行的列值,asp.net,sql-server,asp.net-mvc,triggers,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 *

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

 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)
我不知道我做得对不对

两个表:AspNetUsers表,其中User_points列和Id列作为主键

Posts表,PostId作为主键,PostedBy作为外键,引用AspNetUsers表

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

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

但同样的结果没有发生 请告诉我怎么做。 提前感谢

更改

select @postedby = PostedBy from Posts 

“INSERTED”是一个神奇的表,它将插入/更新的数据保存在此范围内。
与此“已删除”表相同,将以前的数据保留在更新一行中

更新多行列@musthaany的结果仍然相同您的触发器有一个主要缺陷,您似乎认为它每行调用一次-事实并非如此。每个语句触发一次触发器,因此如果
INSERT
语句影响25行,则触发一次触发器,但
Inserted
将包含25行。您的代码将在此处选择这25行中的哪一行<代码>选择@postedBy=postedBy FROM Inserted-这是不确定的-您将得到任意一行,而忽略所有其他行。你需要重写你的触发器来考虑这一点!谢谢你的回复,先生,我在最后一行挣扎在哪里的条件。我使用了相同的参数,并尝试在新表中插入值,以查看@postedBy包含的内容。将值(@PostedBy,@value)插入员工演示(PostedBy,TotalCount)中;但它插入了正确的值,但在更新条件下失败
select @postedby = PostedBy from INSERTED