首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

刪除表記錄後如何讓自增 ID 從 1 重新開始

     編輯:MySQL 資料庫相關知識

問題場景

當使用 DELETE FROM table_name 清空表數據後,自增主鍵(IDENTITY)並不會重置,新插入記錄的 ID 會從原最大值+1 繼續增長。若需讓新記錄 ID 從 1 開始,可採用以下兩種方法。

方法一:TRUNCATE TABLE(推薦)

TRUNCATE TABLE 你的表名;

特點:

  • 一次性刪除所有行,不記錄單行刪除日志,速度極快;
  • 自動重置 IDENTITY 種子值,新記錄 ID 從 1 開始;
  • 無法觸發 DELETE 觸發器;
  • 若表被外鍵約束引用,則不能使用。

方法二:DELETE + DBCC CHECKIDENT

DELETE FROM 你的表名;
DBCC CHECKIDENT ('你的表名', RESEED, 0);

說明:

  • DELETE 逐行刪除,可觸發觸發器,但較慢;
  • DBCC CHECKIDENT 手動重置標識列種子,RESEED, 0 表示下一條記錄 ID 為 1(若表原為空則從 1 開始,若有數據則從最大值+1 開始,需視具體版本行為而定)。

選擇建議

場景推薦方法
完全清空表、無外鍵依賴、追求性能TRUNCATE TABLE
需觸發 DELETE 觸發器、或表有外鍵被引用DELETE + DBCC CHECKIDENT

注意:操作前請務必備份數據,生產環境謹慎執行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved