更新生成两行

时间:2015-05-24 10:13:37

标签: sql sql-server sql-server-2008

我有一张有1行的表 表1

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

我希望更新此行 所以我创建了我的存储过程

update table 1
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

2 个答案:

答案 0 :(得分:1)

这是不可能的。更新修改已存在的记录。因此,您的代码可能正在运行insert命令。或者调用执行相同操作的存储过程。或者触发trigger。但当然,update不会生成新记录。

答案 1 :(得分:0)

可能会有更新触发器写在table.thats上唯一的方法,否则它不能。