我有一個表格,我插入數據到MySQL工作正常。但是,當我從MySQL刪除一些數據,並再次插入數據庫的值自動增量值是從上一行值開始。 ForExample:從PHP刪除後重置mysql自動增量字段值?
,如果我有1,2,3,4,5爲ID在mydatabse,如果我刪除4點5的ID從數據庫 ,並開始從PHP將下一個數據。那麼ID是來自6 ....但我需要得到身份證爲4。可以任何人提供建議。提前感謝。
我有一個表格,我插入數據到MySQL工作正常。但是,當我從MySQL刪除一些數據,並再次插入數據庫的值自動增量值是從上一行值開始。 ForExample:從PHP刪除後重置mysql自動增量字段值?
,如果我有1,2,3,4,5爲ID在mydatabse,如果我刪除4點5的ID從數據庫 ,並開始從PHP將下一個數據。那麼ID是來自6 ....但我需要得到身份證爲4。可以任何人提供建議。提前感謝。
恐怕MySQL不允許你「重置」AUTO_INCREMENT
這樣的字段。如果您需要這種行爲,您必須停止使用AUTO_INCREMENT
並手動生成您的ID。
自動增量不(不能)保證一個不間斷的序列。
您可以自己實現這個爲"SELECT MAX(ID) + 1 FROM MYTABLE;"
但要注意:你將採取輕微但明顯的性能損失。
您也可以通過在單獨的表中運行您自己的計數器來實現此目的。你必須有程序邏輯才能在刪除時正確地減少它,並且當「計數器」將成爲爭用對象時,你將再次遇到性能熱點和死鎖風險。
您不應該在生產環境中使用AUTO_INCREMENT
值,讓MySQL爲您處理它的價值。
如果你需要知道你有多少行,你可以使用
SELECT COUNT(id) FROM tbl;
無論如何,如果你真的想改變其值的語法是:
ALTER TABLE tbl AUTO_INCREMENT=101;
的ID有**沒有* *意思。試圖讓他們「無縫」是沒有意義的。你爲什麼認爲你「需要」無間隙IDS? –
Duplicate:http://stackoverflow.com/q/740358/829533 – zzlalani