2

我有一个应用程序需要为每个项目生成一个唯一标识符,这个标识符是一些首字母、日期和每个新项目递增的 4 位数字的组合。棘手的部分是最后 4 位数字应该每月重置一次。

例如,假设我们有 UID "SP-20121218-0001",最后 4 位数字"0001"将递增到一月份,然后在一月份创建的第一个项目应该有"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

一种可能的选择是将最后 4 位数字基于数据库序列,然后有一个单独的进程在新月份开始时重置该数据库序列。

于 2012-12-18T21:42:43.253 回答