Ahm*_*tun 13 sql sql-server insert
我正在使用SQL Server 2008.
我有一个表A,它在一秒钟内接受许多插入/更新.插入后,更新我想获得受影响的行数.
INSERT INTO A (ID) VALUES (1)
IF @@ROWCOUNT = 0
PRINT 'NO ROWS AFFECTED'
Run Code Online (Sandbox Code Playgroud)
在执行查询时,应用程序可能再次调用相同的查询.那么如果当前执行在INSERT之后但在此时IF阻塞之前会发生什么.
您是否认为@@ROWCOUNT可能因此而给出错误的结果?
或者它在上下文中总是安全的吗?
Ole*_*Dok 21
是的 - 它的安全.它始终引用当前查询中的上一个操作
但
如果您想知道受影响的行数,请先将其保存到变量,因为在IF语句后,计数会@@ROWCOUNT重置
INSERT INTO A (ID) VALUES (1)
DECLARE @rc INT = @@ROWCOUNT
IF @rc = 0
PRINT 'NO ROWS AFFECTED'
ELSE
SELECT @rc AS RowsAffected
Run Code Online (Sandbox Code Playgroud)