如何检查SQL Server上次更新所更改的行数

时间:2014-07-22 22:41:45

标签: sql sql-server sql-update

我可以使用@@ROWCOUNT按最后UPDATE语句检查受影响的行数。但它不是数据库中已更改行的数量。

执行以下语句后执行:

UPDATE User 
SET FirstName = @FirstName 
WHERE Id = @Id

@@ROWCOUNT中的值始终为1 - 在两种情况下:当新的FirstName与旧的FirstName不同时(已更改或未更改)。

是否有任何内置方法可以检查上一个UPDATE实际更改了多少行(不仅仅是受影响)?

2 个答案:

答案 0 :(得分:1)

  1. 检查是否有任何触发器被触发而不是实际的Update语句。
  2. 要获取受更新语句影响的行,您可以在UPDATE语句中使用OUTPUT子句来查看实际更新的行,通过这样做......

    DECLARE @TABLE TABLE (FirstName VARCHAR(100));
    
     UPDATE [User] 
      SET FirstName = @FirstName 
     OUTPUT Inserted.FirstName INTO @TABLE
     WHERE Id = @Id;
    
    SELECT COUNT(*) FROM @TABLE;
    

答案 1 :(得分:0)

不是真的,因为mysql没有检查它是否需要进行更新,它只是这样做。你能做的是:

UPDATE User SET FirstName = @FirstName WHERE Id = @Id AND FirstName <> @FirstName