2012-12-18 22 views
2

我有一個應用程序需要爲每個項目生成一個唯一的標識符,這個標識符是一些首字母縮寫,日期和4位數字,每個新項目增加。棘手的部分是最後4位數應該每月重置。如何擁有一個每月重置的數據庫計數器?

舉個例子,假設我們已經UID 「SP-20121218-0001」,最後4位數字「0001」將增加,直到一月,然後在1月成立的第一個項目應該有「 SP-20130101-0001「

有什麼想法?

+0

只是一個快速的想法(可能不是最佳的解決方案),但如何計算一個年份和月份的額外字段,並且您只是增加當前'(年,月)'的計數器?一個月左右,你可以整理過去的幾個月,甚至讓他們跟蹤你在當月生成的UID數量。 – Carsten

回答

2

創建一個包含年份,月份,CurrentCount字段的表格。編寫一個存儲過程,爲當前年份和月份選擇一行,如果它不存在,則創建它並增加數字。

0

一種可能的選擇是將最後4位數字基於數據庫序列,然後有一個單獨的進程在新月開始時重置該數據庫序列。

1

對我來說這聽起來像是存儲函數的完美用例。

在postgresql中,您可以通過一個序列,然後使用一個函數從序列中選擇一個值,並結合當前日期和日期翻轉來重置序列。

雖然最好的方法是不要打擾重置序列,並只使用由日期補充的唯一編號。

相關問題