2011-08-01 94 views
3

我是新來的整個數據庫場景,只是學習。我有一個數據庫MySQL,我使用phpmyadmin來編輯字段等。我創建了一個auto_incremenet'id'字段,它被設置爲主要字段。如果我添加5個字段,該ID將是'1,2,3,4,5'。如果我刪除所有這些字段並添加另外5個字段,爲什麼ID會變成'6,7,8,9,10'? (而不是回到0,因爲技術上其他領域不再存在,所以它的獨特權利?)。有沒有辦法讓ID順序數字? 1,2,3,4,5?當你從數據庫中刪除一條記錄時mysql

+2

主鍵只能使用一次......因此,即使刪除了一條記錄,PK也不會重新分配給新記錄。 –

+0

如果你確實需要跟蹤諸如「InUseID」之​​類的東西,你需要一個獨立的字段,並且清除它與主鍵「ID」不一樣 – Matt

回答

5

你不需要擔心它。你的主鍵應該是一個unsigned int,它可以保存足夠多的數字。

0

看看this的問題。但基本上是:

ALTER TABLE mytable AUTO_INCREMENT = 1; 

UPDATE

如前所述,具有自動生成擺弄會的PK無限,因爲你有很多頭疼的。或者寫一堆樣板代碼來做家務。

+0

但是請注意,在生產環境中自動生成PK值導致非常令人沮喪的結果。 – Mchl

1

我相信會發生這種情況,因爲在使用關係數據庫系統時,通常可以通過它們的id將行連接到其他行。如果你開始重新使用ID,那麼你可能會陷入混亂的境地。

可以重置AUTO_INCREMENT計數器任何你想使用下面的查詢:

ALTER TABLE tableName AUTO_INCREMENT=123 

如果要刪除表中的所有行,你可以使用TRUNCATE這也將重置計數器。

TRUNCATE TABLE tableName 
1

我認爲這種行爲的主要原因是效率,這意味着MySQL不需要跟蹤哪些數字沒有被使用,它只需要知道哪個數字是最後使用的。