我正在使用SQL Server 2008。
我有一个表A,它在一秒钟内接受许多插入/更新。插入后,更新我想获取受影响的行数。
INSERT INTO A (ID) VALUES (1) IF @@ROWCOUNT = 0 PRINT 'NO ROWS AFFECTED'
在执行查询时,同一查询可以由应用程序再次调用。因此,如果当前执行是 在INSERT之后但在IF块之前,该 怎么办。
您认为@@ROWCOUNT出于这个原因可能会给出错误的结果吗?
@@ROWCOUNT
还是在它的上下文中总是安全的?
是的-它很安全。它始终引用当前查询中的上一个操作
但
如果您想知道受影响的行数, 请先将其保存到变量中 ,因为在afterIF语句后,计数将@@ROWCOUNT重置
IF
INSERT INTO A (ID) VALUES (1) DECLARE @rc INT = @@ROWCOUNT IF @rc = 0 PRINT 'NO ROWS AFFECTED' ELSE SELECT @rc AS RowsAffected