2

アイテムごとに一意の識別子を生成する必要があるアプリケーションがあります。この識別子は、いくつかのイニシャル、日付、および新しいアイテムごとに増分する4桁の数字を組み合わせたものです。トリッキーな部分は、最後の4桁が毎月リセットされる必要があるということです。

例として、UID 「SP-20121218-0001」があるとします。最後の4桁の「0001」は1月まで増加し、1月に作成された最初のアイテムは「SP-20130101-0001」になります。

何かご意見は?

4

3 に答える 3

2

フィールドYear、Month、CurrentCountを持つテーブルを作成します。現在の年と月の行を選択するストアドプロシージャを記述します。行が存在しない場合は、行を作成して数を増やします。

于 2012-12-18T21:43:10.593 に答える
1

私には、これはストアド関数の完璧なユースケースのように聞こえます。

postgresqlでは、シーケンスを作成し、関数を使用してシーケンスから値を選択し、現在の日付を計算し、日付が反転したときにシーケンスをリセットすることでこれを行います。

ただし、最善の方法は、シーケンスをわざわざリセットせずに、日付を補足した一意の番号を使用することです。

于 2012-12-18T21:46:17.127 に答える
0

考えられるオプションの1つは、データベースシーケンスに基づいて最後の4桁を作成し、新しい月が始まるときにそのデータベースシーケンスをリセットする別のプロセスを用意することです。

于 2012-12-18T21:42:43.253 に答える