SQL Server 2008 Expressで行を削除した後、IDフィールドの値を再利用することはできますか?これが例です。主キー(ID)としてIdフィールドを持つテーブルがあるとします。 5つの行を追加すると、次の5つのIDがあります:1、2、3、4、5。これらの行を削除してからさらに5つ追加すると、新しい行のIDは6、7、8になります。 9、10。1からやり直すことはできますか?
これを行うには、別のテーブルからデータを削除する必要がありますか?ご協力いただきありがとうございます。
以下を使用して、IDENTITY値を設定できます。
DBCC CHECKIDENT (orders, RESEED, 999)
つまり、すべてのDELETEに基づいてステートメントを実行する必要があります。それはなぜこれが悪い考えであるかを強調し始めるはずです...
データベースはシーケンシャル値を気にしません-それはプレゼンテーション専用です。
all行を削除した後にIDをリセットする場合は、次のいずれかを実行します
--instead of delete, resets identity value
TRUNCATE TABLE orders
--or if TRUNCATE fails because of FKs, use this after DELETE
DBCC CHECKIDENT (orders, RESEED, 1)
それ以外の場合、内部値はギャップの有無に関係なく重要です。
identity
フィールドは、デフォルトでは古い値を再利用しません。 dbcc checkident
ただし、テーブルにまだ存在する値を下回って再シードするとキー違反が発生するため、これはお勧めしません。一般に、PK値が何であるかを気にする必要はありません。それらが隣接していないという事実は何も傷つけません。