@@rowcount
の範囲はどこですか? MSDNにはその範囲が記載されていません。@@ rowcountの範囲?
最後の文の影響を受ける行の数を返します。
私のSP - 私はinsert trigger
のもう1つのテーブルに挿入しています。テーブルに新しい値を挿入すると、が挿入されます。
質問:
どのスコープに@@rowcount
を指すのでしょうか? (トリガーまたはSP)?
@@rowcount
の範囲はどこですか? MSDNにはその範囲が記載されていません。@@ rowcountの範囲?
最後の文の影響を受ける行の数を返します。
私のSP - 私はinsert trigger
のもう1つのテーブルに挿入しています。テーブルに新しい値を挿入すると、が挿入されます。
質問:
どのスコープに@@rowcount
を指すのでしょうか? (トリガーまたはSP)?
この記事はSQL Server 2000用ですが、バージョン間でスコープが変更されないことを望みます。記事How triggers affect ROWCOUNT and IDENTITY in SQL Server 2000によれば、@@ROWCOUNT
はトリガーの影響を受けません。具体的に
:
これは、ベーステーブル上のトリガーがある場合でも、SQL Server 2000で@@ ROWCOUNTを使用しても安全です。トリガーは結果を歪ませません。あなたはあなたが期待しているものを手に入れます。 NOCOUNTが設定されていても@@ ROWCOUNTは正しく動作します。
だから、
次の3つの行を更新した場合、およびトリガが他の場所で5行を更新し、あなたはSQL Server - is using @@ROWCOUNT safe in multithreaded applications?でGBNの答えから、また@@ROWCOUNT
3の
を取得します:
@@ 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文が影響してみにより影響を受ける行に@@rowcount
をリセットそれゆえ、その範囲は最後に読んだ文です。
ありがとうございました! –