小编典典

SQL Server-在多线程应用程序中使用@@ ROWCOUNT安全吗?

sql

我正在使用SQL Server 2008。

我有一个表A,它在一秒钟内接受许多插入/更新。插入后,更新我想获取受影响的行数。

INSERT INTO A (ID) VALUES (1)
IF @@ROWCOUNT = 0
    PRINT 'NO ROWS AFFECTED'

在执行查询时,同一查询可以由应用程序再次调用。因此,如果当前执行是 在INSERT之后但在IF块之前,该 怎么办。

您认为@@ROWCOUNT出于这个原因可能会给出错误的结果吗?

还是在它的上下文中总是安全的?


阅读 164

收藏
2021-03-23

共1个答案

小编典典

是的-它很安全。它始终引用当前查询中的上一个操作

如果您想知道受影响的行数, 请先将其保存到变量中 ,因为在afterIF语句后,计数将@@ROWCOUNT重置

INSERT INTO A (ID) VALUES (1)
DECLARE @rc INT = @@ROWCOUNT
IF @rc = 0
    PRINT 'NO ROWS AFFECTED'
ELSE
  SELECT @rc AS RowsAffected
2021-03-23