我可以使用@@ROWCOUNT
按最后UPDATE
语句检查受影响的行数。但它不是数据库中已更改行的数量。
执行以下语句后执行:
UPDATE User
SET FirstName = @FirstName
WHERE Id = @Id
@@ROWCOUNT
中的值始终为1
- 在两种情况下:当新的FirstName与旧的FirstName不同时(已更改或未更改)。
是否有任何内置方法可以检查上一个UPDATE
实际更改了多少行(不仅仅是受影响)?
答案 0 :(得分:1)
要获取受更新语句影响的行,您可以在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