首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MySQL 自增主鍵不連續?事務回滾是主因

     編輯:程式設計疑難解答

在 MySQL 中,自增主鍵(AUTO_INCREMENT)出現間隙(不連續)是常見現象,主要原因在於事務回滾。

機制解析

  • 當一條 INSERT 語句執行時,MySQL 會預先分配自增 ID。
  • 若該事務後續發生錯誤或顯式 ROLLBACK,已分配的 ID 不會被回收重用,而是永久「消耗」掉。
  • 併發場景下,多事務交錯分配 ID,回滾更會導致間隙擴大。

其他可能原因

  • 唯一鍵衝突導致插入失敗(同樣消耗 ID)。
  • DELETE 刪除記錄不會重置自增計數器。
  • 手動指定較大 ID 值插入,導致後續自增從該值繼續。

應對建議

自增主鍵的唯一性與遞增性是保證的,連續性則不是設計目標。業務邏輯不應依賴主鍵連續;若需連續序號,應另建業務字段由應用層維護。

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