@@ ROWCOUNT检查未检测到零行计数

时间:2014-07-05 10:54:16

标签: sql sql-server tsql

我有一个SQL Server存储过程(使用SQL Server 2008 R2),它执行几个不同的表更新。当行已更新时,我想在Audit表中记录信息。

这是我的伪代码:

UPDATE tblName SET flag = 'Y' WHERE flag = 'N'

IF @@ROWCOUNT > 0
BEGIN
    INSERT INTO auditTable...etc
END

不幸的是,即使更新零行,它仍会在审计表中记录该行为。

注意:正在更新的表上没有相关的触发器。

为什么会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:5)

在T-SQL中执行的任何语句都将设置@@rowcount,甚至是if语句,因此一般规则是在语句后面的语句中捕获值感兴趣的。

所以

之后
update table set ....

你想要

Select @mycount = @@Rowcount

然后使用此值来执行流量控制或消息。

As the docs state,即使是简单的变量赋值也会将@@rowcount设置为1。

这就是为什么在这种情况下重要的是,如果您希望人们诊断问题,那么您需要提供实际代码,而不是伪代码。