當使用 DELETE FROM table_name 清空表數據後,自增主鍵(IDENTITY)並不會重置,新插入記錄的 ID 會從原最大值+1 繼續增長。若需讓新記錄 ID 從 1 開始,可採用以下兩種方法。
TRUNCATE TABLE 你的表名;
特點:
DELETE 觸發器;DELETE FROM 你的表名;
DBCC CHECKIDENT ('你的表名', RESEED, 0);
說明:
DELETE 逐行刪除,可觸發觸發器,但較慢;DBCC CHECKIDENT 手動重置標識列種子,RESEED, 0 表示下一條記錄 ID 為 1(若表原為空則從 1 開始,若有數據則從最大值+1 開始,需視具體版本行為而定)。| 場景 | 推薦方法 |
|---|---|
| 完全清空表、無外鍵依賴、追求性能 | TRUNCATE TABLE |
| 需觸發 DELETE 觸發器、或表有外鍵被引用 | DELETE + DBCC CHECKIDENT |
注意:操作前請務必備份數據,生產環境謹慎執行。