一、簡述
在 MySQL 中用很多類型的自增 ID,每個自增 ID 都設置了初始值。一般情況下初始值都是從 0 開始,然后按照一定的步長增加。在 MySQL 中只要定義了這個數的字節長度,那么就會有上限。
二、試驗
數據表定義的自增 ID,如果達到上限之后。
再申請下一個 ID 的時候,獲得到的值將保持不變。
我們可以通過下面這個例子來驗證一下:
create table `test` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4294967295; insert into `test` values (null);

可以從這個結果看的出來第一次插入數據的時候 ID 值還是 4294967295,
當第二次插入數據,則報主鍵沖突錯誤了,
這說明 ID 值達到上限之后,就不會再變化了。
畫中話:如果預計到 ID 值可能會被用完,則應該考慮選擇 bigint unsigned 類型。
三、總結
數據庫表的自增 ID 達到上限之后,再申請時它的值就不會在改變了,繼續插入數據時會導致報主鍵沖突錯誤。因此在設計數據表時,盡量根據業務需求來選擇合適的字段類型。