2013-02-15 297 views
0

我必须将用户配置文件存储在带有12位唯一ID的LDAP中,所以想到通过创建序列并使用Java代码(seq.nextVal())访问它来使用 数据库。 但是我们公司只支持mysql,但是mysql不支持序列。在java应用程序中生成12位唯一编号

是否有解决方法来实现这个使用mysql。

+0

@LuiggiMendoza:但是我在java应用程序中需要该Id,以便我可以分配给用户配置文件以将其保存在LDAP中。 – 2013-02-15 20:17:42

+0

在使用它保存数据库之前,你确定你的应用程序需要这个ID吗? – 2013-02-15 20:20:08

+0

@LuiggiMendoza:是的,我确定我需要Id.I'm不保存到数据库表,我将配置文件保存到LDAP。 – 2013-02-15 20:22:29

回答

1

MySQL支持INTEGER数据类型的自动增量。请参阅

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

如果你想现场UNIQUE,那么你可以将其设置为PRIMARY KEY

作为示例,您可以使用ID BIGINT PRIMARY KEY AUTO INCREMENT作为您的字段。


如果您在Java应用程序需要这个值,你可以:

  • 生成ID在你的MySQL数据库

  • 获取在Java应用程序的价值

  • 使用该值将其保存在您的LDAP中

作为测试,这将保证所有的元素有12位(根据你最后的评论):

CREATE TABLE uniqueids(id BIGINT PRIMARY KEY AUTO_INCREMENT); 

INSERT INTO uniqueids VALUES(100000000000); 

INSERT INTO uniqueids VALUES(null); 

SELECT * 
FROM uniqueids 

测试在MySQL 5.0

SQL小提琴:http://www.sqlfiddle.com/#!2/8c508f/1

+0

所以每次我想要一个唯一的数字,那么我必须首先调用插入表并获取ID ..是正确的? – 2013-02-15 20:31:57

+0

是的,你是对的。另一种策略可以是手动更新此ID,方法是将其增加1,然后检索此值。 – 2013-02-15 20:33:04

+0

我讨厌这样做......为什么Mysql不支持Sequence ... – 2013-02-15 20:36:53