2012-10-09 29 views
1

我有3個選項可以將一個新的UNIQUE ID(primary_key)添加到我的某個特定表中。在表中添加新行ID

  1. 創建AUTO_INCREMENT字段。
  2. SELECT ID FROM表ORDER BY ID DESC LIMIT 1
  3. SELECT MAX(ID)FROM表

我目前使用的選項,人們可以從他們訪問表中刪除行,所以id的獲得釋放,否則我會使用選項

你推薦什麼?

+2

1沒有任何例外。 「所以id得到釋放」---免費爲什麼?你是否對非連續ID有任何問題? – zerkms

+0

第1行用於創建自動ID,但2和3是選擇最大ID,你想創建ID或SELECT? – Dev

+0

無論如何,你現在的解決方案只能「釋放」最偉大的「id」......如果「*人們可能會用最大的id」以外的任何東西刪除行*,它仍然不會被「釋放*」。 – eggyal

回答

3

你應該總是使用選項1(以避免兩人的race hazard同時將客戶閱讀的最簡單方法在完成插入之前的當前最大值id)。 AUTO_INCREMENT通過使用使讀寫操作原子化的鎖來防止發生此危險。

+0

感謝的人...我其實想要最大限度地減少最大ID,所以我會最好的使用ID作爲號碼的偉大....但它是真實的,如果PPL刪除ID低於最大的行,它會仍然獲得最大值,並添加它...我將從現在開始使用AUTO_INCREMENT,這也是更安全,我可以看到..感謝很多 –

1

選項1

AUTO_INCREMENT

這是 實現和維護

+1

在這種特殊情況下,輕鬆實際上並不是真正的原因。 – zerkms

1

創建一個數據庫序列並使用它,即使在多線程訪問方案和分佈式環境以及集羣環境中,這也會給您更多的啓發。