日期:2014-05-16  浏览次数:20474 次

DB2生成类似UUID的字符串GENERATE_UNIQUE()

在生成诸如主键之类的字符串时, 以前我常用identity, 遗憾这类identity做外键时由于需要数据库迁移而导致发生变化, 不可靠, 因此UUID是一个不错的选择, 虽然性能差了一些.

?

可惜DB2不提供生成UUID的方法, 但是提供了GENERATE_UNIQUE()函数来生成唯一字符串, 但是要求也不少.

首先使用GENERATE_UNIQUE()函数生成的unique ID的列必须声明为FOR BIT DATA, 即在建表的时候需要指定该column为FOR BIT DATA类型.

?

在插入数据的时候, 直接使用GENERATE_UNIQUE()函数就可以了.

?

步骤如下, 首先定义一个TEST表

CREATE TABLE test(unique_id CHAR(13) FOR BIT DATA, name VARCHAR(20)

?

然后测试插入数据

INSERT INTO test VALUES(GENERATE_UNIQUE(), 'Alex')

?

select查询数据得到

UNIQUE_ID                                   NAME
-----------------------------               --------------------
x'20140303070226123986000000'               Alex

?

详细解释在infocenter

http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/index.jsp