如何使用Uniqe产品代码自动化数据库ID,然后将其重置为1时,将其重置为1?
我目前正在使用Java Spring Boot。我正在使用JPA存储库和PostgreSQL作为数据库,
我的企业所有者希望我创建包含
PRODUCT_CODE-YEAR-MONTH-INCREMENT_NUMBER
- 增量编号的交易ID,其中包含8个长度编号
示例:0000001,0000011,0000201
example : 48-2022-04-0000001
48-2022-04-0000001
48-2022-04-0000002
48-2022-04-0000003
-----> 48-2022-04-0000203
下个月时,增量编号将重置为0000001。
将是:
48-2022-05-0000001
最好的方法是什么?
另外,如果有任何查询可以选择给定月和年份的最后一个数据?
请帮助我,我只想提前说谢谢
I am currently working with java spring boot. I am using JPA Repository and postgresql as database
My business owner want me to create id of transaction that contain
PRODUCT_CODE-YEAR-MONTH-INCREMENT_NUMBER
- increment number contain 8 length number
Example : 0000001, 0000011, 0000201
example : 48-2022-04-0000001
48-2022-04-0000001
48-2022-04-0000002
48-2022-04-0000003
-----> 48-2022-04-0000203
The increment number will be reset to be 0000001 when next month.
Will be:
48-2022-05-0000001
What the best way to do this?
Also if there is any query to select last data on given month and year?
Please help me, I just want to say thank you in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
多个序列,每年一个序列,
您没有一个序列。您有很多序列,每个月一个。
使用Postgres命令创建序列以创建每个月命名的序列。我建议使用一个序列名称,其中包括标准 iso 8601 格式,yyyyy-------毫米。
在java中,使用
YearMonth
表示特定的月份。你说:
否时,增量编号将重置为0000001,不要考虑重置。一方面,在某些情况下,您需要在以前或将来的几个月内创建交易。重置将排除这一点。
因此,请保留多个序列,每月一个。
Multiple sequences, one per year-month
You don’t have one sequence. You have many sequences, one for each month.
Use Postgres command CREATE SEQUENCE to create a sequence named for each month. I suggest using a sequence name that includes the year-month in standard ISO 8601 format, YYYY-MM.
In Java, use the
YearMonth
to represent a particular month.You said:
No, don’t think in terms of resetting. For one thing, there may be exceptional circumstances where you need to create transactions for previous or future months. Resetting would preclude that.
So keep multiple sequences, one per month.