一般的な質問です。どのテーブルにも接続されていない IDENTITY PK を持つテーブルがあります。テーブルには別の唯一の FK があります。
ある条件で、そのテーブルに対して DELETE コマンドを実行します。
自動挿入された次の PK ID を使用して、新しいレコードをテーブルに INSERT できます。
しかし、PK で ID 番号を再利用することはありません。
次のようなものを実行すると
DECLARE @max_PKid BIGINT;
SET @max_PKid = (SELECT ISNULL(MAX(PKid), 0) FROM Table WHERE FKid=@somevalue);
DBCC CHECKIDENT ('Table', reseed, @max_PKid)
DELETE の直後、次の INSERT でアクセス違反の問題が発生します。
質問 1: 一般に、DBCC CHECKIDENT を使用せずに DELETE/INSERT を実行した後、テーブル内の順序付けされていない (たとえば、シードされていない) PKid に間隔を空けることは良い習慣ですか? 私はそれらを気にする必要がありますか?
質問 2: そうでない場合、どうすればよいですか?