我正在從csv導出數據到mysql數據庫,我希望數據庫爲每個導入的記錄生成唯一的ID。我想在Crystal報表中使用唯一字段生成收據編號。如何在不使用AUTOINCREMENT的情況下生成唯一ID
對於這樣做的最佳方式,您會有什麼建議?
我正在從csv導出數據到mysql數據庫,我希望數據庫爲每個導入的記錄生成唯一的ID。我想在Crystal報表中使用唯一字段生成收據編號。如何在不使用AUTOINCREMENT的情況下生成唯一ID
對於這樣做的最佳方式,您會有什麼建議?
自動增量絕對是在MySQL中這樣做的正確方法,是否有充分的理由不使用它?
如果你想要更像甲骨文的序列,你可以use another table with an autoincrement column。
如果你不想自動增加唯一的方法來保證唯一性就是使用GUID作爲id。
我說「虛擬」,因爲理論上有可能會產生兩次相同的GUID,但它對於所有日常用途實際上都是零。從維基百科文章:
唯一密鑰(21 或3.4×10 )的總數是很大,以致所產生的兩倍相同數目的概率是非常小的,並且某些技術已經開發出來以幫助確保數字不重複。
謝謝,我會用auto_increment函數去。但是,如果我使用LOAD DATA INFILE命令,我需要知道它是否會自動生成ID。 另外我需要知道如何解決出現的位數。我想使用十六進制(id)函數將數字轉換爲十六進制,但我希望十六進制值顯示在6. ABCDEF塊中。 – Ibrahim 2010-05-08 13:50:09
爲什麼要避免自動增加?如果你想避免低數字,你應該能夠使用AUTO_INCREMENT表選項給它一個適當大的種子值。 – tvanfosson 2010-05-07 10:54:16
你應該解釋爲什麼AUTOINCREMENT對你沒有好處,以便得到一個很好的答案。 – Unreason 2010-05-07 10:59:38