2

6つの数字の一意のトークンを生成したいデータベースがあります。このトークンは、請求書番号が列に挿入されるたびに生成される必要があり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');

トークンを数値にする必要がある場合は、MINVALUE100000 に変更します。

(割り当ては にありplpgsqlます。これらはトリガーまたはストアド プロシージャで使用できます。)

于 2012-08-16T06:54:30.113 に答える