0

これはおそらく簡単な質問ですが、私は会社のためにいくつかの挿入物を作成しており、挿入物のいくつかはすでに「存在する可能性があります」。したがって、主キーの値がすでに存在するため、失敗します...

問題は.....残りの更新/挿入は通過しますか? またはすべてが失敗しますか?

とにかく上書きする方法はありますか、そうでない場合は残りのスクリプトを続行しますか?

ありがとう

4

2 に答える 2

0

セットベースの操作を行っている場合:

INSERT <foo>
SELECT <stuff>

次に、操作はアトミックです-すべてが機能するか、どれも機能しないかのいずれかです(これは良いことです)。ただし、カーソル ベースの単一アイテムの挿入を行っている場合、挿入の失敗によってバッチが中止されることはおそらくありません。ただし、これは恐ろしく遅いです。

ただし、本当に必要なのは、MERGE ステートメントを使用することです。SQL Server 2008 以降を使用していると仮定します。

または、INSERT ステートメントに WHERE NOT EXISTS () 句を追加して、既に存在する行を挿入しないようにすることもできます。

ここを読む: http://technet.microsoft.com/en-us/library/bb510625.aspx

于 2013-06-21T14:18:38.993 に答える
0

TRY/CATCH ブロックを使用するか、INSERT を使用する前に行が既に存在するかどうかを確認できます。

于 2013-06-21T14:14:12.517 に答える