回答:
アイデンティティ値をリセットするには
DBCC CHECKIDENT('tableName', RESEED, 0)
したがって、次回TableNameに挿入すると、挿入されるID値は1になります。
テーブルから行を削除しても、Identity値はリセットされませんが、増加し続けます。あなたのケースで起こったことと同じです。
テーブルを切り捨てると、ID値がテーブルの元のシード値にリセットされます。
詳細については、SQLサーバー– DELETE、TRUNCATE、およびRESEED IDを参照してください。また、切り捨てと削除の違いについての適切な説明があります。
KinはIDENTITY値をリセットする方法を示しましたが、すべてのデータを実際に削除するときに開発環境の外で、なぜこれを行う必要があるのですか?
実稼働中にIDENTITY値の連続したシーケンスを維持するつもりがないことを願っています。そして、IDENTITY値をハードコーディングするコードを実際に書いていないことを願っています。これらが意味のあるID値である場合、IDENTITYプロパティの使用を停止する必要があります。
これを防ぐには、いくつかのことがあります。
つまり、ギャップが気になる場合、またはこれらの値に特定の意味を与えたい場合は、IDENTITYの使用をやめてください。テーブルを削除して再作成し、値を削除して再入力する必要がある場合は、更新を実行するか、その列のハードコーディングされた値で挿入を実行します。
余談ですが、主キーとIDは同じものではありません。ID列は、明示的に定義しない限り主キーではありません。また、ID列ではない主キーを確実に持つことができます。
IDフィールドの増分値に従わない最後の行のみを削除する必要がある場合、簡単で安全な方法があります。
これで完了です。