2013-02-25 60 views
0

當我用數據庫中的元數據刪除一個人時,如果我添加一個新的數據庫,通常是正確的和安全的方式,數據庫會統計ID + 1 , 對?MySQL:我有一些主鍵問題

因此,當我刪除meta_id(主鍵)10的人時,下一個添加的人可以再次獲得meta_id 10嗎?

+0

不,如果你的主鍵是10,並且你正在使用MySQL中的'auto_increment',那麼刪除這一行將不會釋放主鍵。下一個將是11,不管' 10插槽「是免費的。 – halfer 2013-02-25 10:11:25

回答

3

實際上,無論您從數據庫中刪除的數據如何,MySQL都會保留一個內部索引迭代器。因此,如果您創建一個主鍵ID爲10的新行,然後刪除該行並創建一個新行,那麼如果依賴於auto_increment來迭代ID,則新行的主鍵ID將爲11。這種行爲是預期的。

簡單來說,沒有。 MySQL的auto_increment不會允許你描述的內容。

+0

請告訴我這個解釋是否難以理解,我會盡力解釋它。你的英語沒問題。 :) – L0j1k 2013-02-25 10:11:50

+1

我明白了...... thx :-) – Nubu 2013-02-25 14:32:52

+0

如果這個回答適合你,請不要忘記接受它。謝謝! – L0j1k 2013-02-25 17:40:06

0

除了到目前爲止發佈的答案之外,請記住數據庫的主鍵只有一個目的 - 識別一行。這並不能讓使用順序編號變得容易。當你想要實現你所描述的功能時,有很多含義 - 當把數據寫入硬盤時,你會打亂MySQL的內部結構(更確切地說,是InnoDB引擎),從而使其變慢。

如果您需要某種與您的記錄相關的順序編號,您可以創建觸發器來處理該記錄,也可以在顯示數據庫記錄時使用某種編號方法。您不需要使用主鍵或auto_increment。