-1

正如你们中的一些人已经知道的那样,我不是一个成熟的开发人员,但也许你可以帮我做一个粗略的设计?

我想模仿航空公司预订系统为它们的主键随机生成唯一记录定位器的方式。生成的值都不能形成淫秽词、其他指定值或在现有行中重复,因此需要包含禁止值的单独查找表吗?

编辑:最好使用有效键填充表并随机选择尚未使用 key_already_used 标志更新的行以生成值,或者该值是否应该由用户定义的函数随机生成,查找看看它是否不在禁止值表中,然后查找它是否尚未插入到保留表中?

4

1 回答 1

1

是一个很好的例子。

要将 int 转换为 char 序列:

create function CustomerNumber (@id int) 
returns char(5) 
as 
begin 
  return char(@id / power(26,3) % 26 + 65) + 
     char(@id / power(26,2) % 26 + 65) + 
     char(@id / 26 % 26 + 65) + 
     char(@id % 26 + 65) 
end

然后你所要做的就是传递一个唯一的整数,你会得到一个唯一的字符串(或一个随机整数,你会得到一个随机字符串)

(请记住,随机不等于唯一

我猜在informix中它应该是这样的?

CREATE FUNCTION CustomerNumber (id int)
RETURNING char(5);
 RETURN integer::char(id / POW(26,3) % 26 + 65) + 
         integer::char(id / POW(26,2) % 26 + 65) + 
         integer::char(id / 26 % 26 + 65) + 
         integer::char(id % 26 + 65) 
END FUNCTION
于 2012-07-12T03:49:25.813 回答