テーブルを切り捨てるときに、自動インクリメントされたインデックスフィールドが中断したところから続行されることをMySQLで覚えているようです。そのため、最大の ID が 100 であるテーブルが切り捨てられた場合、切り捨て後の次の ID は 101 になります。
SQL Serverでこれを行う方法はありますか? 1000 行を超えるテーブルを切り捨てましたが、切り捨てた後、ID 列の次の新しい ID が 1 に戻りました。これからも続けてほしいです。
テーブルを切り捨てるときに、自動インクリメントされたインデックスフィールドが中断したところから続行されることをMySQLで覚えているようです。そのため、最大の ID が 100 であるテーブルが切り捨てられた場合、切り捨て後の次の ID は 101 になります。
SQL Serverでこれを行う方法はありますか? 1000 行を超えるテーブルを切り捨てましたが、切り捨てた後、ID 列の次の新しい ID が 1 に戻りました。これからも続けてほしいです。
DBCC CHECKIDENT (<table name>, reseed, 1000)
トリックを行う必要があります。
上記の reseed は次の番号が 1001 になることを意味するので、次の ID を 1000 にしたい場合は 999 に設定してください。
この記事では、もう少し詳しく説明します。
MSDNから:
テーブルに ID 列が含まれている場合、その列のカウンターは列に定義されたシード値にリセットされます。シードが定義されていない場合、デフォルト値 1 が使用されます。ID カウンターを保持するには、代わりに DELETE を使用します。
テーブルを切り捨てるように設定されている場合は、切り捨てる前に手動で最大 ID を調べてから、 を使用してテーブルを再シードできますDBCC CHECKIDENT
。