2

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

4

1 回答 1

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。您可以在触发器或存储过程中使用它们。)

于 2012-08-16T06:54:30.113 回答