6つの数字の一意のトークンを生成したいデータベースがあります。このトークンは、請求書番号が列に挿入されるたびに生成される必要がありinvoice_no
ます。invoice_no
これは、挿入を実行し、列が挿入されないたびnull
に、数字のトークンが生成されることを意味します。トークンは、どのインスタンスでも繰り返されることなく、できるだけ多くのトークンを生成するようにしたいと思います。ありがとう
質問する
565 次
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 に答える