當由MySQL生成的UUID()
不唯一時會發生什麼?如果這是針對主鍵的列,那麼MySQL會出錯,還是會嘗試生成另一個UUID,直到找到真正唯一的一個UUID?MySQL UUID()何時不唯一?
回答
那麼,如果你打電話UUID()
兩次,並得到相同的結果,最有問題的東西會是「東西壞了」(tm)。據我所知,它應該是獨一無二的,應該是永遠的。
將不會有「再生」代碼可用:該功能旨在甚至跨計算機創建唯一的密鑰,所以它如何才能知道其結果不是唯一的?
從 http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid甲UUID被設計爲一個數字,是在空間和時間 全局唯一。對UUID()的兩個調用預計會生成兩個不同的 值,即使這些調用是在兩個不相互連接的單獨計算機 上執行的。
也許你的意思是別的?例如,如果您使用UUID()
來生成應該是唯一的東西(如主鍵或唯一字段等),並且您以前添加了相同的編號(例如,您只需要調用UUID()
一次,但插入了兩次),那麼當將非唯一內容添加到應該是唯一的地方時,您將獲得默認錯誤。你不會得到一個新的。
一些閱讀材料有關的唯一性:
的手冊。讀它,以及它如何使用各種零件生成
uuid
:http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid檢查該手冊的實際定義鏈接(但是這是一個相當讀,所以你可能會跳過這一項):https://www2.opengroup.org/ogsys/jsp/publications/PublicationDetails.jsp?catalogno=c706
一些容易理解的dubplicates的概率在這裏指標:http://en.wikipedia.org/wiki/Universally_unique_identifier
沒有對MySQL的網站(論壇等),也有的談,如何使用它作爲主鍵,但我在工作和短期的時間,你需要自己搜索:)
MySQL UUID()確定性地基於MAC地址,版本和時間戳。如果單個服務器上的2個線程使用相同的時間戳(完全相同的微秒)調用,則預期會得到相同的結果。這對單線程是不可能的,因爲這些調用在4Ghz處理器上會分開幾微秒。
我忘了提及:你會得到一個重複的主鍵錯誤。 – dusc2don 2013-06-28 19:33:44
- 1. 模型中的Django Auto UUID不唯一
- 2. UUID是唯一的嗎? iphone
- 3. 計算UUID唯一的概率
- 4. UUID爲唯一的整數ID?
- 5. 使用UUID的唯一文件名
- 6. 休眠UUID代和MySQL UUID功能UUID()
- 7. MySQL - 不唯一表/別名
- 8. 基於時間的UUID在雲環境中可能不唯一嗎?
- 9. 當用戶卸載並重新安裝時,設備UUID不唯一
- 10. 如何在nodeJs中每次調用函數時都生成唯一的UUID?
- 11. 如何在swift中生成特定於設備的唯一uuid
- 12. 如何唯一標識iOS設備而不是使用UUID和UDID
- 13. MySQL和UUID問題
- 14. MySQL數據庫唯一字段(不是表唯一)
- 15. Mysql的暫時抑制唯一索引
- 16. MySQL查詢選擇唯一時間戳
- 17. MySQL加入唯一
- 18. mysql的唯一ID
- 19. MySQL「非唯一ID」
- 20. MySQL - 唯一外鍵
- 21. 來自同一臺機器上多個進程的唯一UUID
- 22. MySQL - 使一對值唯一
- 23. MySQL的UNION不返回唯一列
- 24. 刪除重複行mysql不唯一
- 25. MySQL不報告索引唯一性?
- 26. Mysql的唯一鍵不起作用
- 27. MySQL不是唯一的表/別名
- 28. 多在mysql中唯一不支持NULL
- 29. 隨着時間的推移MySQL不同(唯一)值
- 30. 當數值爲NULL時,MySQL唯一索引不適用
嗯,但不是UUID的「大多是獨一無二的低碰撞機率」,而不是保證獨特?我想這就是我不確定的部分 - 有沒有可能UUID()可能不會生成唯一的ID? – ina 2012-03-14 01:10:54
變化是一個棘手的詞彙,但將它們用作主鍵並不是聞所未聞的,如果這就是你所要求的。我會發布一些閱讀材料,但你可以很容易地找到一些。 – Nanne 2012-03-14 08:12:28
你會推薦使用UUID作爲主鍵嗎? – ina 2012-03-14 11:07:38