2011-01-19 126 views
3

我正在研究生成唯一ID的函數 - 我的具體要求是唯一ID只需要8位數字。生成一個唯一的ID

無論如何,我剛剛意識到,我們可以設置一個ID自動增量字段從任何數字開始。所以假設我從11111111開始 - 我認爲所有新記錄都會從這個值增加是正確的嗎?如果是這樣,那麼我有我獨特的8位數字ID,不需要使用此功能。

而且,如果一條記錄被刪除,那麼新記錄是否會重新使用該刪除的ID?

回答

4

1)自動增量值不重用

2)是,通過自動增量計數器設置爲一個8位數字(如10000000),就可以實現這一點! (表選項「AUTO_INCREMENT = N」)

6

這是正確的。如果您的自動編號列的起始位置爲11111111,則下一行的編號爲11111112.

當記錄被刪除時,其自動編號爲而不是重複使用。

編輯:關於最大值,這取決於您選擇的列類型。從MySQL文檔:

使用足夠大的整數數據類型爲AUTO_INCREMENT列來保存您將需要的最大序列值。當列達到數據類型的上限時,下一次生成序列號的嘗試失敗。例如,如果您使用TINYINT,最大允許的序列號是127。TINYINT UNSIGNED,最大值爲255

你可以使用一個INT,至多到4294967295,或BIGINT,至多到18446744073709551615。見http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

+1

還要注意,當列到99999999時,下一個插入會出錯,自動遞增將不會迴繞並返回00000001. – tloach 2011-01-19 14:20:16

+0

@tloach - 不是嗎?只要去下一個值,即100000000? – GSTAR 2011-01-19 14:25:33