@@rowcount
的範圍是什麼? MSDN沒有提到它的範圍。@@ rowcount的範圍?
返回受上一條語句影響的行數。
好的。
在我的SP - 我插入一個表,其中有一個insert trigger
其中另一個插入新值插入到表中。
問:
到哪個範圍@@rowcount
將參考? (觸發器或SP)?
@@rowcount
的範圍是什麼? MSDN沒有提到它的範圍。@@ rowcount的範圍?
返回受上一條語句影響的行數。
好的。
在我的SP - 我插入一個表,其中有一個insert trigger
其中另一個插入新值插入到表中。
問:
到哪個範圍@@rowcount
將參考? (觸發器或SP)?
當然,這篇文章是針對SQL Server 2000的,但有人希望範圍在版本之間不會改變。根據文章How triggers affect ROWCOUNT and IDENTITY in SQL Server 2000,@@ROWCOUNT
不會受到觸發器的影響。
具體做法是:
它的安全使用@@ ROWCOUNT SQL Server 2000中,即使有基表上的觸發器。觸發器不會歪曲你的結果;你會得到你所期望的。即使設置了NOCOUNT,@@ ROWCOUNT也能正常工作。
所以,如果你更新五行別處三行,觸發更新,你會得到SQL Server - is using @@ROWCOUNT safe in multithreaded applications? 3.
一個@@ROWCOUNT
另外,從GBN的回答是:
@@ ROWCOUNT是範圍和連接安全的。
實際上,它只讀取該連接和作用域的最後一條語句行數。
每個插入/更新/選擇/套/ delete語句重置@@rowcount
到受執行的語句的行
begin
declare @myrowcount int,
@myrowcount2 int
insert stmt
SET @[email protected]@rowcount
if @myrowcount>0
begin
insert stmt
SET @myrowcount2 [email protected]@rowcount
if @myrowcount2 >0
do smthg
end
end
或試試這個
SELECT * FROM master.sys.objects -- 50 rows
IF (1=1)
SELECT @@ROWCOUNT AS RowsAffected -- 0, because the IF did not affect any rows
甚至IF語句影響它......因此它的範圍是讀取的最後一條語句。
謝謝你的解釋! – 2016-04-21 08:54:38