更新生成两行

15 浏览
0 Comments

更新生成两行

我有一张只有一行的表格

表格1

____________________________________________
id_employee | month| year| score| nbr_month|
____________________________________________
14          |  2   |2015 | 15   | 4        |
____________________________________________

我想要更新这一行的数据

所以我创建了一个存储过程

update table1
set score=10,nbr_month=4
where id_employee=14 and month=2 and year=2015

但是执行存储过程后,结果生成了另一行数据

____________________________________________
id_employee | month| year| score| nbr_month|
____________________________________________
14          |  2   |2015 | 15   | 4        |
14          |  2   |2015 | 10   | 4        |
____________________________________________

请问问题出在哪里?

先行致谢。

存储过程如下:

ALTER proc [dbo].[update_score] 
 @id_employee int, 
 @score int, 
 @nbr_month int, 
 @month int, 
 @year int 
as 
begin 
  update table1 
   set score = @score
      ,nbr_month = @nbr_month 
   where id_employee = id_employee 
     and [month] = @month 
     and [year]  = @year 
end

0
0 Comments

问题的原因是表上可能有一个更新触发器(update Trigger),这可能是唯一的方式,否则无法生成两行。

解决方法是找到并删除该更新触发器。

0
0 Comments

问题出现的原因是因为update命令只能修改已经存在的记录,而不能生成新的记录。可能是代码中执行了insert命令,或者调用了一个执行相同操作的存储过程,或者触发了一个触发器。但是无论如何,update命令都不会生成新的记录。

解决方法:检查代码中是否有执行insert命令的部分,如果有的话可以考虑修改为update命令。同时也需要检查是否存在调用存储过程或触发器的情况,确保不会生成新的记录。如果需要生成新的记录,可以尝试使用其他命令或方法来实现。

0