Cơ chế auto_increment là bắt buộc để tạo ra duy nhất giá trị lớn hơn bất kỳ giá trị nào mà nó đã tạo trước đó. Nó không đảm bảo tạo ra liên tiếp giá trị.
Có một số cuộc thảo luận về nó ở đây: https://bugs.mysql.com/bug. php? id =57643
Có rất ít tầm quan trọng trong việc tạo các giá trị liên tiếp một cách trung thực, bởi vì bất kỳ giá trị nào cũng có thể bị "mất" vì các lý do khác:
- CHÈN của bạn không thành công, chẳng hạn như do vi phạm một ràng buộc như KEY UNIQUE hoặc FOREIGN KEY.
- Bạn khôi phục giao dịch cho INSERT của mình.
- Bạn thành công và cam kết, nhưng sau đó hàng bị bạn hoặc phiên khác XÓA.
Giá trị auto-inc không được trả lại cho bất kỳ loại hàng đợi nào, vì các phiên đồng thời khác có thể đã tạo thêm giá trị id trong thời gian chờ đợi. Không đáng để InnoDB duy trì một nhóm các giá trị id chưa được phân bổ, vì nhóm đó có thể trở nên lớn và lãng phí.
Ngoài ra, có thể thích hợp để "mất" một giá trị ID hoặc người khác sẽ nghĩ rằng hàng mà họ muốn XÓA bằng cách nào đó đã quay trở lại.