2013-08-23 86 views
0

我有一個表格,我插入數據到MySQL工作正常。但是,當我從MySQL刪除一些數據,並再次插入數據庫的值自動增量值是從上一行值開始。 ForExample:從PHP刪除後重置mysql自動增量字段值?

,如果我有1,2,3,4,5爲ID在mydatabse,如果我刪除4點5的ID從數據庫 ,並開始從PHP將下一個數據。那麼ID是來自6 ....但我需要得到身份證爲4。可以任何人提供建議。提前感謝。

+1

的ID有**沒有* *意思。試圖讓他們「無縫」是沒有意義的。你爲什麼認爲你「需要」無間隙IDS? –

+1

Duplicate:http://stackoverflow.com/q/740358/829533 – zzlalani

回答

1

恐怕MySQL不允許你「重置」AUTO_INCREMENT這樣的字段。如果您需要這種行爲,您必須停止使用AUTO_INCREMENT並手動生成您的ID。

0

自動增量不(不能)保證一個不間斷的序列。

您可以自己實現這個爲"SELECT MAX(ID) + 1 FROM MYTABLE;"

但要注意:你將採取輕微但明顯的性能損失。

  1. 如果您運行的更新同時,你的風險死鎖
  2. (再次,如果你同時運行的更新),您將風險有兩個插入使用相同的密鑰。

您也可以通過在單獨的表中運行您自己的計數器來實現此目的。你必須有程序邏輯才能在刪除時正確地減少它,並且當「計數器」將成爲爭用對象時,你將再次遇到性能熱點和死鎖風險。

0

您不應該在生產環境中使用AUTO_INCREMENT值,讓MySQL爲您處理它的價值。

如果你需要知道你有多少行,你可以使用

SELECT COUNT(id) FROM tbl; 

無論如何,如果你真的想改變其值的語法是:

ALTER TABLE tbl AUTO_INCREMENT=101;