私はSQL Server 2008を使用しています。SQL Server - マルチスレッドアプリケーションで@@ ROWCOUNTを安全に使用していますか?
私は1秒で多くの挿入/更新を受け入れるテーブルAを持っています。挿入後、更新私は影響を受ける行の数を取得したい。
INSERT INTO A (ID) VALUES (1)
IF @@ROWCOUNT = 0
PRINT 'NO ROWS AFFECTED'
クエリが実行されている間、同じクエリがアプリケーションによって再度呼び出されることがあります。では、現在の実行がINSERTの後、IFブロックの前にの場合は、その時点でとなります。
あなたは@@ROWCOUNT
がその理由で間違った結果をもたらすかもしれないと思いますか?
また、その文脈では常に安全ですか?
MS SQL 2008 R2 DBに対してこれをテストしましたが、 '@@ ROWCOUNT'に対する' IF'チェックは問題なく動作しました。何かをする前にいつも '@@ ROWCOUNT'をローカルに保存することは良い習慣であると理解できます。しかし、どうしてあなたは**最初にそれをローカル変数に保存しなければならないと言ったのですか?これは良い習慣であるか、 '@@ ROWCOUNT'の値を直接チェックすることは本当に信頼できないのでしょうか? – Sam
アクセスする前に値を保存する必要があります。 –
私はこれが必要であることを示す参考文献を見つけるために少し調べましたが、私は見つけられませんでした。これを行う必要があることを実証するために提供できる参考資料または情報源はありますか? – Sam