DB2在行插入时创建一个随机但唯一的字符标识符

问题描述 投票:0回答:3

我目前在DB2表中有一列,该列通过字符加密的值通过Web调用和过程传递。类型为CHARACTER(13),带有用于加密的CSSID。

这已经成为通过多个API来适应的巨大痛苦,但最初的目的是允许我们在不是主键的调用中使用唯一的ID。

在DB2-400中,对于唯一的且在插入时随机创建但不需要解密的13个或更多字符串,第二个最好的方法是什么(不需要纯字符串)?

是否有一种通用的方法?我们不会传递安全数据,因此不需要加密,但我们只需要一个随机创建的唯一字符

sql db2 db2-400
3个回答
1
投票

尝试hex(generate_unique())。这是唯一的CHAR(26)字符串。或to_char(timestamp(generate_unique()), 'YYYYMMDDHH24MISSFF6')。您也可以使用to_char功能的格式播放。假设使用反向格式(例如FF6SSMIHH24DDMMYYYY)可能会很有用,以避免在繁重的插入活动时发生唯一的索引页争用。


0
投票

这是注释部分中不适合的注释。

我已经无权访问DB2-400,但是我在Linux的DB2 10.5中测试了下面的代码。

create sequence seq1;

select concat('A', varchar_format(next value for seq1, '000000000000')) as my_id
from sysibm.sysdummy1;

结果,如果您连续运行4次:

A0000000000001
A0000000000002
A0000000000003
A0000000000004

也许在DB2-400中有等效的东西。


0
投票

听起来像您可能正在使用GENERATE_UNIQUE()

GENERATE_UNIQUE函数返回位数据字符串13个字节long(CHAR(13)FOR BIT DATA)

与加密实际上没有任何关系...

我认为,理想的解决方案几乎可以产生唯一的值,而不是简单的数字标识。那么您遇到了什么问题?

© www.soinside.com 2019 - 2024. All rights reserved.