2011-04-29 113 views
0

我有一個MySQL表看起來像這樣:在MySQL自動生成唯一文本值?

my_numbermy_unique_text_field

my_number是一個整數

每當我插入一個數字到現場my_number,我想唯一的文本值被分配到字段my_unique_text_field。可以直接使用MySQL來實現嗎?或者我必須使用我的客戶端生成這個唯一的文本字符串(我正在使用python)?

+0

你需要這種獨特的文字是有意義的?如果不是這種情況,你可以考慮使用散列/ UUID。 – 2011-04-29 03:24:53

+0

不,唯一的文本不應該是有意義的 - 它應該是唯一的 – user3262424 2011-04-29 03:29:06

+0

你可以在MySQL的my_unique_field列設置唯一約束。每個新的重複添加都會失敗。但是,這種不符合你自動生成的想法?對? – 2011-04-29 03:33:01

回答

3

mysql的UUID已經足夠了。但如果你仍然擔心可能的重複 - 你最好在python中生成它並處理唯一的約束錯誤。

+0

謝謝。可以用'MySQL'產生'UUID'來重複嗎? – user3262424 2011-04-29 03:28:43

+0

@ user540009:通過定義和描述 - nope:'UUID被設計爲一個在空間和時間上全球唯一的數字。兩次對UUID()的調用預計會生成兩個不同的值,即使這些調用是在兩臺不相互連接的獨立計算機上執行的。所以它在我們的宇宙中是唯一的。 – zerkms 2011-04-29 03:29:56

+0

UUID不能有重複。 – 2011-04-29 03:30:03

1

如果你只是一個唯一的ID,而不是文字,最好的辦法是使用UUID後

+0

謝謝。如果一個人在一個唯一的ID之後,並且可以選擇一個文本ID或一個數字ID,是否有一個偏好? – user3262424 2011-04-29 04:12:47

+0

UUID是字母和數字的混合體 - 因此,沒有選擇。一般來說,我相信數字身份證更容易管理。 UUID可以在您遇到安全問題時使用。例如:假設你想爲你的用戶邀請生成邀請URL,最好使用UUID來代替數字ID,因爲數字ID很容易被猜出,邀請可能會被破壞..(如果你的應用程序沒有一個堅實的邏輯。 ) – 2011-04-29 04:20:26

+0

謝謝你,Jasdeep – user3262424 2011-04-29 13:28:42