UPDATE Table SET ...
IF @@ROWCOUNT = 0 INSERT INTO Table ...
は、これはうまくいきましたが、今私は、同時に複数の独立したレコードを追加する必要があります私は次のようなものを試しました:
UPDATE Table SET ...
IF @@ROWCOUNT = 0 INSERT INTO Table ...
UPDATE Table SET ...
IF @@ROWCOUNT < 2 INSERT INTO Table ...
UPDATE Table SET ...
IF @@ROWCOUNT < 3 INSERT INTO Table ...
UPDATE Table SET ...
IF @@ROWCOUNT < 4 INSERT INTO Table ...
... 1つのトランザクションでそれを保つために。いくつかの可能な方法があるかどうか、私は疑問に思う...どうやら@@ROWCOUNT
別の方法をINSERT
ED行をカウントし、または私はその概念を誤解していません
を - しかし、それは特定の行がすでに存在する場合であっても、行を追加して第二宣言から始まりますこれをSQLクエリ内で解決します。この特定のケースでは、はでなければなりません。すべてのレコードが最初のレコードの存在に依存していると仮定するのはOKですが、100%信頼できるわけではありません。
EDIT - ソリューション:
これは、すべてのアプリケーション(特定の更新は個別にチェックされないことに、注意してください)には可能ではないかもしれないが、私の場合には、それがうまく動作するようにapearsととも整合的であるべきです更新/挿入されたデータのセットが積分されているためです。
UPDATE Table SET ...
UPDATE Table SET ...
UPDATE Table SET ...
UPDATE Table SET ...
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO Table ...
INSERT INTO Table ...
INSERT INTO Table ...
INSERT INTO Table ...
END
これをサブクエリにすることができます。たとえば、 'row_count = 0、row_count = 1のときにテーブルケースに挿入すると、(count(1)を選択するとテーブルからのrow_count); –
ああ待って... '@@ ROWCOUNT'は最初の' UPDATE'の影響を受ける行の数ですか?私のtsqlはかなり錆びています。 –
ええと、私の知識が不足していますが、トランザクションが完了する前に副照会が実際に(新しいデータで)動作するのでしょうか? –