资讯专栏INFORMATION COLUMN

关于循环主键的设计

Jackwoo / 1880人阅读

摘要:关于循环主键的设计需求一笔业务要生成一个序号,序号长度为位,序号的规则是固定的前缀位日期位受理人序号位每日循环的序列号位。方案采用关系数据库来实现,列有和字段,是主键。

关于循环主键的设计 需求

一笔业务要生成一个序号,序号长度为20位,序号的规则是固定的前缀(5位)+日期(yyyymmdd)(8位)+受理人序号(3位)+每日循环的序列号(4位)。例如
业务员001的业务编号
ORDER201801010010001
ORDER201801010010002
ORDER201801010010003
ORDER201801020010001
业务员002的业务编号
ORDER201801010020001
ORDER201801010020002
ORDER201801010020003
ORDER201801020020001

目前我想到的有两种实现方式,如下

方案1

采用redis来实现,将循环序列号前面的作为KEY,比如ORDER20180101001,ORDER20180101002,设置一个超时时间,目前是按天循环,则超时时间设置为24小时。value则是一个自增的数字。这样就可以满足需求了。

方案2

采用关系数据库来实现,列有seqprefix和nextval字段,seqprefix是主键。获取的时候查看seqprefix是否存在,不存在则插入 seqprefix=“XXX”,nextval=2. 如果有,则取出当前的nextval,并+1更新。

总结

以上两个都可以满足需求。方案1比较方便,不涉及数据表,方案2比较重一点。不知道业界还有没有其他的方法来实现。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71696.html

相关文章

  • MySQL 索引的原理与应用:索引类型,存储结构与锁

    摘要:索引的原理与应用索引类型,存储结构与锁在数据结构与算法索引一节中,我们讨论了这样的文件索引以及全文索引的基础算法,本文则会针对文件索引在关系型数据库中的实际应用进行探讨。这个索引的是数据表的主键,因此表数据文件本身就是主索引。 showImg(https://segmentfault.com/img/remote/1460000018453572?w=1280&h=554); 本文节选...

    ephererid 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<