2

次のテーブルを設定しました。

  • Id intpk、null でない一意
  • Name varchar(50)ヌルではない
  • この問題に関連しないその他の列

Name一意でクラスター化されないように設定されたインデックスを使用します。

Nameつまり、テーブルにまだ存在しない新しい行のみを挿入し、新しい行が重複している場合はエラーをスローしますName

私はそれについてうるさいかもしれませんが、重複を追加しようとするたびにId、新しい行が non-duplicate だった場合、SQL Server は割り当てられた次の行をスキップしますName

挿入または拒否を決定する前に最初に存在を照会する必要なく、何らかの設定でこれを防ぐ方法はありますか?

4

1 に答える 1

2

いいえ、失敗した挿入で ID 値が増加しないようにする設定はありません。

あなたが示唆するように、挿入を実行する前に重複をチェックすることでこれを軽減できます.IDが増加しないようにするためだけでなく、Sql Serverが標準的な手順としてエラーを発生させないようにするためにもこれを行います.

ただし、挿入が失敗する原因となる例外的な状況が他にもある可能性があります...したがって、ID のギャップが審美的な問題以上のものをもたらす場合、ID 列は、解決しようとしているものの最適なソリューションではない可能性があります。

于 2012-12-07T16:53:21.740 に答える