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

DB2 creating a random but unique character identifier upon row insert

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

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

在 DB2-400 中,对于 13 个或更多字符的唯一且在插入时随机创建但不需要解密(只是一个普通字符串)的字符串来说,下一个最好的是什么?

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

这条评论不适合放在评论区。

我无法访问 DB2-400(不再),但我在 DB2 10.5 中针对 Linux.

测试了以下代码
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 中有类似的东西。

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

GENERATE_UNIQUE function returns a bit data character string 13 bytes long (CHAR(13) FOR BIT DATA)

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

在我看来,这几乎是生成唯一值而不是简单数字标识的理想解决方案。那么你遇到了什么问题?

尝试hex(generate_unique())。它是独一无二的 CHAR(26) 字符串。
to_char(timestamp(generate_unique()), 'YYYYMMDDHH24MISSFF6')。您也可以使用 to_char 函数的格式。比方说,使用像 FF6SSMIHH24DDMMYYYY 这样的反向格式可能会很有用,以避免在大量插入 activity.

时出现唯一索引页争用