0

つまり、procを呼び出すトリガーがある場合。@@rowcountprocの最初の行をチェックインできるようにする必要がありますか?そして@@rowcount、トリガーで実行された最後のSQLステートメントに基づく値が必要ですか?

作成しなかったprocをデバッグしています。procの最初の行は

if @@rowcount=0
RETURN

procはトリガーによって呼び出されます。トリガーがprocを呼び出す前に最後に行うことは、次のとおりです。

INSERT INTO #temp_table (some fields...)
SELECT some fields.. FROM inserted

EXEC SOMEPROC

何が起こっているのかという@@rowcountと、procは常に0であり、procは何かをする前に終了します。@@rowcountチェックをトリガーに移動してプロシージャから削除するだけなので、修正は非常に簡単です。

しかし、そもそもなぜこのように書かれたのか不思議です。ある時点で機能していたのとほぼ同じですが、現在は機能していませんか?SQL2005とSQL2008の間で動作に変更があったかどうか、またはシステム設定が反転したかどうかを確認したかっただけです。それとも、私の前任者の1人が、機能しない悪いコードを書いただけでしたか?

4

1 に答える 1