2013-02-15 303 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