如何在不使用AUTOINCREMENT的情况下生成唯一ID
问题描述:
我正在从csv导出数据到mysql数据库,我希望数据库为每个导入的记录生成唯一的ID。我想在Crystal报表中使用唯一字段生成收据编号。如何在不使用AUTOINCREMENT的情况下生成唯一ID
对于这样做的最佳方式,您会有什么建议?
答
自动增量绝对是在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
为什么要避免自动增加?如果你想避免低数字,你应该能够使用AUTO_INCREMENT表选项给它一个适当大的种子值。 – tvanfosson 2010-05-07 10:54:16
你应该解释为什么AUTOINCREMENT对你没有好处,以便得到一个很好的答案。 – Unreason 2010-05-07 10:59:38