2013-07-06 31 views
-4

創建存儲用戶在像這樣有什麼辦法重新安排的MySQL行

id name family 
1 mark zooker 
2 mak donald 

一個表,一個月後我優化我的代碼,並使其優化,我在MySQL刪除了一些行和現在它的外觀像這樣例如

id name family 
1 mark zooker 
3 allin wood 

我需要知道的是有什麼辦法可以重新排列的主鍵是ID?主鍵是自動遞增場

+0

爲什麼?事實上,序列中存在差距並不重要。你想解決什麼問題? –

+0

每個用戶都有自己的ID,現在用戶ID爲2的用戶不存在? – HiDd3N

+0

那又如何?沒有人受到未使用的用戶ID的傷害。 – ceejayoz

回答

1

主鍵不應該查NGE。它們是該記錄的唯一標識符。你想要做的就像改變每個人在街上的地址,因爲一個家庭搬出去了。

正確架構,對於一段數據有一個跳過的ID沒有損害。

+0

謝謝我不知道這 – HiDd3N

0

如果你想保持相同的物理順序,但重新排列id(儘管它對我沒有任何意義,但我想你只是練習),你必須分兩步完成:

  • 添加另一列(姑且稱之爲NEW_ID),這是AUTO_INCREMENT也
  • 更新ID列到NEW_ID列匹配。

RDBMs不關心行的物理順序。

+0

MySQL不會允許兩個'auto_increment'列,並且您已經錯過了更新任何引用主鍵的* other *表的重要步驟。 – ceejayoz

+0

實踐我ask.can我們下降自動增量字段,並添加另一個自動增量字段? @ceejayoz? – HiDd3N

+0

是的,您可以,但是如果您放棄主鍵字段,則不能保證記錄將以相同的順序被檢索。這就是爲什麼我建議創建另一列。 – George

相關問題