Roy*_*mir 28 sql-server rowcount
范围是@@rowcount什么?MSDN没有提到它的范围.
返回最后一个语句影响的行数.
好.
在我的SP -我插入一个表格,里面有insert trigger哪些呢另一插入时,一个新的值插入到表中.
题:
@@rowcount将参考哪个范围?(触发器还是SP)?
Lit*_*les 20
当然,本文适用于SQL Server 2000,但人们希望范围不会在版本之间发生变化.根据文章How触发器如何影响SQL Server 2000中的ROWCOUNT和IDENTITY,@@ROWCOUNT不会受到触发器的影响.
特别:
即使基表上有触发器,在SQL Server 2000中使用@@ ROWCOUNT也是安全的.触发器不会扭曲您的结果; 你会得到你期望的.即使设置了NOCOUNT,@@ ROWCOUNT也能正常工作.
因此,如果您更新三行,并且触发器在其他地方更新了五行,那么您将得到@@ROWCOUNT3行.
另外,从GBN在SQL Server中的答案- 在多线程应用程序中使用@@ ROWCOUNT安全吗?:
@@ ROWCOUNT是范围和连接安全的.
实际上,它只读取该连接和范围的最后一个语句行数.
NG.*_*NG. 12
每个insert/update/select/set/delete语句都会重置为@@rowcount受执行语句影响的行
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
Run Code Online (Sandbox Code Playgroud)
或试试这个
SELECT * FROM master.sys.objects -- 50 rows
IF (1=1)
SELECT @@ROWCOUNT AS RowsAffected -- 0, because the IF did not affect any rows
Run Code Online (Sandbox Code Playgroud)
甚至IF语句都会影响它......因此它的范围是最后一个读取的语句.