一种通用数据库中自动编号生成方法与流程

文档序号:11155484阅读:515来源:国知局
一种通用数据库中自动编号生成方法与制造工艺

本发明属于数据处理技术领域,尤其涉及一种通用数据库中自动编号生成方法。



背景技术:

在生成编号时,由于多用户并发、手工改动、批处理等操作,经常会造成调号、重号等异常数据,一般的编号生成技术只是针对并发情况进行处理,缺少完善的机制控制各种可能情况下编号的有效性。在相关表单编号生成的技术中,存在着分别提供生成预览编号的显示,正式编号用于保存的客户端/服务器系统,解决了网络并发环境下可能出现的编号异常,但未提供在手工改动、批处理等非正常业务流程下保障编号有效性的方法,也未提供在出现错误数据后的异常处理措施。

根据上述内容可知,企业管理软件中不同业务的表单类型和不同用户需求、应用场景需要更完善的编号生成方法,但是目前的技术难以完成以下技术效果:

1、编号规则的适应性:规则可灵活配置或扩展以适应不同用户场景、不同应用场景;

2、生成编号的有效性:生成编号规则预定义的规则、在业务数据中保证唯一性和连续性,能够准确无误地反映对应的业务含义。



技术实现要素:

本发明的目的在于提供一种通用数据库中自动编号生成方法,旨在解决适应不同数据库的中自动编号通用性、有效性、连续性问题。

本发明是这样实现的,一种通用数据库中自动编号生成方法,所述通用数据库中自动编号生成方法,获取指定数据库中的当前编号;根据设定的步长,在当前编号的基础上进行自增得到生成的编号;输出生成的编号并将编号保存至指定的关系数据库中。

进一步,所述通用数据库中自动编号生成方法包括以下步骤:

(1)指定需要生成编号的业务表及对应的字段;

(2)设置自动编号规则格式;

(3)设置自动编号的步长;

(4)规则处理;

(5)动态生成查询语句;

(6)编号生成;

(7)输出生成的编号并将编号保存至指定的关系数据库中。

进一步,所述设置自动编号规则格式包括:

多个n表示自增序列;

yyyy表示年;

mm表示月;

dd表示日;

ww表示周;

hh表示小时;

mi表示分;

ss表示秒。

进一步,所述规则处理包括:

日期格式化,按照年月日组合不同的格式;

获取自动编号规则格式中自增序列在规则格式中的起始位置、截止位置和自增序列的长度。

进一步,所述动态生成查询语句包括:

以指定需要生成编号的业务表为待查询数据表;

依据获取的自增序列的起始位置、截止位置,截取指定需要生成编号的业务表对应的字段,并求出最大;

依据替换后的编码和自增序列的起始位置、截止位置,获取在自增序列以前的字符内容和自增序列以后的字符内容,并以获取的两个字符内容作为生成编号的字段的查询内容。

进一步,所述编号生成包括:

依据动态查询语句获取当前业务表中最大的编号;

依据设定的设置自动编号的步长,对生成的编号进行累加;

数据长度,对于每个编号规则参数,可指定其在生成的编号中所占的数据长度,当指定的数据不足设定长度时,可使用特定的字符自动补齐。

本发明的另一目的在于提供一种应用所述通用数据库中自动编号生成方法的oracle数据库自动编号生成方法。

本发明的另一目的在于提供一种应用所述通用数据库中自动编号生成方法的mysql数据库自动编号生成方法。

本发明的另一目的在于提供一种应用所述通用数据库中自动编号生成方法的sqlserver数据库自动编号生成方法。

本发明的另一目的在于提供一种应用所述通用数据库中自动编号生成方法的db2数据库自动编号生成方法。

本发明提供的通用数据库中自动编号生成方法,有效的解决传统技术中生成编号的并发操作带来的跳号、重号的影响;本发明能够保证编号规则的适应性,即根据不同用户需求、不同场景可灵活变更或扩展编号规则,同时也能够保证生成编号的有效性,即生成的编号符合预定义的编号规则,在业务数据中保证唯一性和连续性。本发明可以跨数据库,做为一个组件提供给开发者使用。

附图说明

图1是本发明实施例提供的通用数据库中自动编号生成方法流程图。

图2是本发明实施例提供的实施例1的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明获取指定数据库中的当前编号;所述的指定数据库是常见的关系数据库,如oracle,mysql,sqlserver,db2等;根据设定的步长,在当前编号的基础上进行自增得到生成的编号;输出所述生成的编号并将编号保存至所述指定的关系数据库中。

下面结合附图对本发明的应用原理作详细的描述。

如图1所示,本发明实施例提供的通用数据库中自动编号生成方法包括以下步骤:

S101:指定需要生成编号的业务表及对应的字段;

S102:设置自动编号规则格式;

S103:设置自动编号的步长;

S104:规则处理;

S105:动态生成查询语句;

S106:编号生成;

S107:输出生成的编号并将编号保存至指定的关系数据库中。

下面结合具体实施例对本发明的应用原理作进一步的描述

实施例1:

如图2所示,本发明实施例提供的通用数据库中自动编号生成方法包括以下步骤:

1.指定需要生成编号的业务表及对应的字段;如需要按照规则自动生成合同号,生成的合同号对应合同表(T_CONTRACT)及对应的合同编号字段(CONTRACT_SNO)

2.设置自动编号规则格式;按实例需要设置规则格式为YYYYMM-NNNN,如201606-0003编号。

a)其中规则格式中,多个n表示自增序列;

b)yyyy表示年;

c)mm表示月;

d)dd表示日;

e)ww表示周;

f)hh表示小时;

g)mi表示分;

h)ss表示秒;

3.设置自动编号的步长;按实例需要设置步长为1,则表示每增加一个合同号,累加1,累加的内容只在NNNN中进行,如YYYYMM发生编号,则重新计数,如201606-0003,跨年或跨月后则是201607-0001、201701-0001。

4.规则处理;

4.1日期格式化,按照年月日等组合不同的格式,如“1970-01-01”,按照“yyyymm”格式化为“197001”;(判定规则:判定是否有yyyy在自动编号规则格式中,如出现则用当前的年替换;其他时间相关的符号使用相同的方法处理);

按实例需要用替换的方法替换yyyy、mm、dd、ww、hh、mi、ss的信息,如用当前的时间替换后201608-NNNN,并将N替换掉后201608-

4.2获取自动编号规则格式中自增序列(多个n)在规则格式中的起始位置、截止位置和自增序列的长度;

按实例需要用查询的方法查询规则格式中n的起始位置、截止位置及长度,如起始位置为7、截止位置为10、长度为4

5.动态生成查询语句

5.1以指定需要生成编号的业务表为待查询数据表;

5.2依据4.2中获取的自增序列的起始位置、截止位置,截取指定需要生成编号的业务表对应的字段,并求出最大;

使用标准的结构化查询语言拼接动态语句,

5.3依据4.1种替换后的编码和4.2中的自增序列的起始位置、截止位置,获取在自增序列以前的字符内容和自增序列以后的字符内容,并以获取的两个字符内容作为生成编号的字段的查询内容。

按实例需要及前面步骤产生的信息,动态生成如下结构化查询语言,

select max(to_mumber(substr(CONTRACT_SNO,7,4)))maxcolname from T_CONTRACT where CONTRACT_SNO like‘%201608-%’

6.编号生成

6.1依据5的动态查询语句获取当前业务表中最大的编号;按实例需要获取到当前最大的编号,如0003

6.2依据3中设定的设置自动编号的步长,对生成的编号进行累加;按实例需要将其多余的0替换掉后,依据步长为1进行类型,得到4

6.3数据长度,对于每个编号规则参数,可指定其在生成的编号中所占的数据长度,当指定的数据不足设定长度时,可使用特定的字符自动补齐。按实例需要“4位前缀”规则,对参数值“4”进行格式化得到“0004”;

7.输出所述生成的编号并将编号保存至所述指定的关系数据库中。

按实例需要将4.1中生成的201608-与6.3中生成的0004组合后得到当前的合同编号201608-0004,此编号将根据业务需求保存至所述指定的关系数据库中。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1