つまり、procを呼び出すトリガーがある場合。@@rowcount
procの最初の行をチェックインできるようにする必要がありますか?そして@@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人が、機能しない悪いコードを書いただけでしたか?