如何在不使用AUTOINCREMENT的情况下生成唯一ID

问题描述:

我正在从csv导出数据到mysql数据库,我希望数据库为每个导入的记录生成唯一的ID。我想在Crystal报表中使用唯一字段生成收据编号。如何在不使用AUTOINCREMENT的情况下生成唯一ID

对于这样做的最佳方式,您会有什么建议?

+1

为什么要避免自动增加?如果你想避免低数字,你应该能够使用AUTO_INCREMENT表选项给它一个适当大的种子值。 – tvanfosson 2010-05-07 10:54:16

+2

你应该解释为什么AUTOINCREMENT对你没有好处,以便得到一个很好的答案。 – Unreason 2010-05-07 10:59:38

自动增量绝对是在MySQL中这样做的正确方法,是否有充分的理由不使用它?

如果你想要更像甲骨文的序列,你可以use another table with an autoincrement column

如果你不想自动增加唯一的方法来保证唯一性就是使用GUID作为id。

我说“虚拟”,因为理论上有可能会产生两次相同的GUID,但它对于所有日常用途实际上都是零。从维基百科文章:

唯一密钥(21 或3.4×10 )的总数是很大,以致所产生的两倍相同数目的概率是非常小的,并且某些技术已经开发出来以帮助确保数字不重复。

+0

谢谢,我会用auto_increment函数去。但是,如果我使用LOAD DATA INFILE命令,我需要知道它是否会自动生成ID。 另外我需要知道如何解决出现的位数。我想使用十六进制(id)函数将数字转换为十六进制,但我希望十六进制值显示在6. ABCDEF块中。 – Ibrahim 2010-05-08 13:50:09