2014-08-31 115 views
0

我有一個腳本,它將INSERT的數據放入一個表中,然後在你插入新數據的時候刪除它的前一個記錄/ s和INSERT的當前數據集。mySQL主鍵奇怪

唯一的問題是主鍵被破壞。

例如前四行

1 
2 
3 
4 

然後當我刪除這些並輸入新數據

5 
3 
4 
6 

注:上面的數字代表的主鍵ID自動incrementations

爲什麼在增量變得混亂乎?

+0

這應該是不可能的,除非您的刪除還重置auto_increment值? – 2014-08-31 22:53:21

+0

爲什麼不用'truncate'呢? – Marty 2014-08-31 22:53:46

回答

2

自動增量編號做不是弄糊塗了。它們在桌子上是唯一的,這是他們唯一的目的。

如果您選擇數據,則數據庫將盡可能快地獲取記錄,並且如果您沒有指定特定的順序,那麼記錄將以不可預知的順序返回。

如果指定

select * from your_table 
order by id 

然後記錄都遞增的數字意思。如果您刪除記錄,那麼加油將不會被填滿。

+0

他的3和4正在'回收'這不應該是可能的 – 2014-08-31 22:55:28

+0

好吧我明白,但是mysql是同步的嗎?所以如果你運行一個查詢來更新一組記錄,那麼它們會一個接一個地執行? – Aiden 2014-08-31 22:56:47

+0

@Aiden:是的,記錄一個接一個地更新。但是如果你沒有指定一個訂單,那麼你不能說哪一個會先被更新。 – 2014-08-31 23:01:16

0

如果要重新啓動號碼,請使用truncate table而不是delete。這將重置計數器爲0:

truncate table <your table here>;