2011-04-29 172 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