创造独特的令牌(数字)

时间:2012-08-16 05:46:41

标签: postgresql token sequences

我有一个数据库,我想生成六个数字字符的唯一标记。每次在invoice_no列中插入发票号时,都应生成此令牌。这意味着每次进行插入且列invoice_no不是null时,都会生成数字标记。我希望令牌能够生成尽可能多的令牌,而不会在任何情况下重复令牌。感谢

1 个答案:

答案 0 :(得分:2)

您可以创建序列并使用它来生成令牌:

CREATE SEQUENCE seq_token
MINVALUE 0
MAXVALUE 999999
CYCLE
;

将当前令牌设置为下一个可用值:

num_token := nextval('seq_token');

您的实际令牌必须是6位数。如果你使用以零开头的标记(例如002354),那么实际的标记必须是一个文本,你可以像

那样生成
text_token := lpad(num_token::text, 6, '0');

如果令牌必须是数字,则将MINVALUE更改为100000。

(作业位于plpgsql。您可以在触发器或存储过程中使用这些作业。)