我目前在DB2表中有一列,该列通过字符加密的值通过Web调用和过程传递。类型为CHARACTER(13),带有用于加密的CSSID。
这已经成为通过多个API来适应的巨大痛苦,但最初的目的是允许我们在不是主键的调用中使用唯一的ID。
在DB2-400中,对于唯一的且在插入时随机创建但不需要解密的13个或更多字符串,第二个最好的方法是什么(不需要纯字符串)?
是否有一种通用的方法?我们不会传递安全数据,因此不需要加密,但我们只需要一个随机创建的唯一字符
尝试hex(generate_unique())
。这是唯一的CHAR(26)
字符串。或to_char(timestamp(generate_unique()), 'YYYYMMDDHH24MISSFF6')
。您也可以使用to_char功能的格式播放。假设使用反向格式(例如FF6SSMIHH24DDMMYYYY
)可能会很有用,以避免在繁重的插入活动时发生唯一的索引页争用。
这是注释部分中不适合的注释。
我已经无权访问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中有等效的东西。
听起来像您可能正在使用GENERATE_UNIQUE()
GENERATE_UNIQUE函数返回位数据字符串13个字节long(CHAR(13)FOR BIT DATA)
与加密实际上没有任何关系...
我认为,理想的解决方案几乎可以产生唯一的值,而不是简单的数字标识。那么您遇到了什么问题?