2011-08-09 25 views
0

大家好有任何SQL功能將所有的auto_increment IDS?Mysql的重置AUTO_INCREMENT不是新的ID,但是對於所有的(還舊IDS)

我的意思是,我有這種情況(ID = 1,ID2 = 2,ID3 = 3)

一旦我刪除ID我想退回這種情況(ID2 = 1,ID3 = 2)等等。

需要我一個腳本來做到這一點?

+2

你是否明白它會打破其他表中的外鍵,鏈接到你的網站等? – RiaD

+0

我知道,但它僅僅是一個幻燈片庫表;) – memento

回答

0

你可以爲整個表重置AUTO_INCREMENT

ALTER TABLE table AUTO_INCREMENT=1; 

但你真的不能回去,以填補在已經刪除的各行的值。 auto_increment值旨在是唯一的,但如果發生刪除或插入的新行的顯式值設置爲auto_increment列,則不能保證保持順序。

如果您需要修改它們再次成爲連續的,它必須在代碼中完成,大概遍歷所有行並單獨進行UPDATE語句。

+0

呃..它不工作導致,如果我有我的表,從6日起也不會更改爲1條第一個記錄,然後依次其他記錄:( – memento

+2

@紀念見我的答案的其餘部分。'auto_increment'不能有效地用於保證順序編號。這不是它的目的。 –

0

Id爲標識,這意味着它必須永遠不會改變!至少在良好的數據庫設計中。身份證是你與生俱來的東西,與你一起死去。

+0

我不會永遠不會說,你可以強制使用'ON UPDATE CASCADE'在InnoDB表的外鍵關係。 –

+0

不同意,有案件和:)(@tomas) – memento

+0

我沒有外鍵是一個唯一的記錄我不需要任何外鍵或在未來的變化;) – memento

相關問題