首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@rowcount的范围?

@rowcount的范围?
EN

Stack Overflow用户
提问于 2012-08-06 19:53:26
回答 2查看 28.2K关注 0票数 31

@@rowcount的作用域是什么?MSDN没有提到它的范围。

返回受最后一条语句影响的行数。

好的。

在我的SP中,我插入到一个表中,该表有一个insert trigger,当一个新值插入到表中时,它会执行另一个插入。

问题:

@@rowcount所指的范围是什么?(触发器还是SP)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-06 20:02:27

当然,这篇文章是针对Server 2000的,但人们希望版本之间的范围不会改变。根据触发器如何影响Server 2000中的ROWCOUNT和标识一文,@@ROWCOUNT不会受到触发器的影响。

具体地说:

即使在基表中有触发器时,在Server 2000中使用@@ROWCOUNT也是安全的。触发器不会扭曲您的结果;您将得到您所期望的。@@ROWCOUNT即使在设置NOCOUNT时也能正常工作。

因此,如果您更新了三行,而触发器在其他地方更新了五行,那么您将得到一个3的@@ROWCOUNT

另外,从Server在多线程应用程序中使用@@ROWCOUNT安全吗?中的GBN的答案

@@ROWCOUNT是作用域和连接安全。 实际上,它只读取该连接和作用域的最后一个语句行计数。

票数 23
EN

Stack Overflow用户

发布于 2012-08-07 03:01:59

每个insert/update/select/set/delete语句将@@rowcount重置为受执行语句影响的行

代码语言:javascript
复制
begin
declare @myrowcount int,
    @myrowcount2 int
insert stmt
SET @myrowcount=@@rowcount
if @myrowcount>0
begin
insert stmt
SET @myrowcount2 =@@rowcount
if @myrowcount2 >0
do smthg
end
end

或者试试这个

代码语言:javascript
复制
 SELECT * FROM master.sys.objects -- 50 rows
    IF (1=1)
        SELECT @@ROWCOUNT AS RowsAffected -- 0, because the IF did not affect any rows

即使是IF语句也会影响it....hence,其作用域是最后读取的语句。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11834980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档