gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:42:24 27 4
gpt4 key购买 nike

我使用的是 SQL Server 2008。

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

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

在执行查询时,应用程序可能会再次调用相同的查询。那么,如果当前执行在 INSERT 之后但当时 IF block 之前,会发生什么。

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

或者它在其上下文中总是安全的?

最佳答案

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

但是

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

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

关于SQL Server - 在多线程应用程序中使用 @@ROWCOUNT 安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8960510/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com