一种通用的数据库序列生成方法
【专利摘要】本发明涉及软件开发【技术领域】,具体涉及一种通用的数据库序列生成方法。本发明通过SQL语句创建一个数据库表和三个存储过程:数据库表记录序列名称、阶值(即两个相邻序列间隔的值)、序列当前值,第一个存储过程通过序列名称获取当前序列值,第二个存储过程通过序列名称生成新的序列值,第三个存储过程用来设置该名称的序列的值,从而实现数据库序列的生成方法。本发明解决了应用系统软件移植困难的问题;可以用于改善应用系统软件的可移植性。
【专利说明】一种通用的数据库序列生成方法
【技术领域】
[0001] 本发明涉及软件开发【技术领域】,具体涉及一种通用的数据库序列生成方法。
【背景技术】
[0002] 当前市面上常用的数据库软件,提供的序列解决机制各不相同--有的是提前生 成序列作为数据记录ID,再插入数据记录信息;有的是在插入数据记录信息时才生成序列 ID;有的提供了获取序列的接口;有的则内嵌在系统里,通过自增长实现,不提供直接获取 序列的接口。这样使得开发应用软件时,当配置不同的数据库时,就必须调整生成或获取序 列的程序代码,从而导致软件进行移植比较困难。
【发明内容】
[0003] 本发明解决的技术问题在于提供一种通用的数据库序列生成方法;使应用系统软 件在配置不同数据库时,不用再更改涉及数据库序列的代码,从而提高软件的可移植性。
[0004] 本发明解决上述技术问题的技术方案是:
[0005] 所述的方法通过SQL语句创建一个数据库表和三个存储过程;数据库表用来存储 序列信息,第一个存储过程用来获取序列当前值,第二个存储过程用来设置并获取新的序 列值,第三个存储过程用来设置序列的初始值;开发应用软件时,通过程序调用这三个存储 过程,实现设置或获取序列值的功能。
[0006] 通过数据库表sequence存储序列信息,包括序列名称name、阶值increment、序 列当前值current_value ;输入序列名称,调用currval存储过程,通过查询表sequence 中name与输入的序列名称相同的current_value值并返回,从而获取到该序列的当前值; 输入序列名称,调用nextval存储过程,将表sequence中name与输入的序列名称相同的 current_value值,更新为current_value当前值与increment的值之和,并返回该值,从 而获得该序列的新序列号;输入序列名称、序列值,调用setval存储过程,将表sequence中 name与输入的序列名称相同的current_value值,更新为输入的序列值,并返回该值,完成 设置该序列的起始号。
[0007] 主要包括如下步骤:
[0008] 第1步、仓Il建数据库表sequence存储序列信息,包括序列名称name、阶值(即两个 相邻序列间隔的值)increment、序列当前值current_value ;
[0009] 第2步、仓ij建获取序列当前值的存储过程currval,该存储过程通过查询表 sequence中name与输入的序列名称相同的current_value值获取到该序列的当前值;
[0010] 第3步、创建获取序列新序列号的存储过程nextval,该存储过程执行将表 sequence 中 name 与输入的序列名称相同的current_value值,更新为current_value当前 值与increment的值之和的操作,并返回该值作为新的序列号;
[0011] 第4步、仓ij建设置序列值的存储过程setval,该存储过程执行将表sequence中 name与输入的序列名称相同的current_value值,更新为输入的序列值的操作,设置该序 列的起始号。
[0012] 本发明的有益效果是:用简单的SQL语句创建存储序列的表和操作序列值的存储 过程,开发应用软件时,通过程序代码调用存储过程,实现设置或获取序列值的功能,降低 应用程序与具体数据库的耦合,提高应用软件的可移植性。
【专利附图】
【附图说明】
[0013] 下面结合附图对本发明进一步说明:
[0014] 图1为数据库中存储序列的sequence表结构图;
[0015] 图2为存储过程currval获取序列当前值的操作图;
[0016] 图3为存储过程nextval获取新序列值的操作图;
[0017] 图4为存储过程setval设置序列值的操作图。
【具体实施方式】
[0018] 下面我们以MySQL数据库为例,讲述该方法的实施:
[0019] 第1步、创建存储序列信息的数据库表sequence, SQL语句如下:
[0020]
【权利要求】
1. 一种通用的数据库序列生成方法,其特征在于:所述的方法通过s化语句创建一个 数据库表和H个存储过程;数据库表用来存储序列信息,第一个存储过程用来获取序列当 前值,第二个存储过程用来设置并获取新的序列值,第H个存储过程用来设置序列的初始 值;开发应用软件时,通过程序调用该H个存储过程,实现设置或获取序列值的功能。
2. 根据权利要求1所述的通用的数据库序列生成方法,其特征在于: 通过数据库表sequence存储序列信息,包括序列名称name、阶值increment、序列当前 值current_value ;输入序列名称,调用currval存储过程,通过查询表sequence中name与 输入的序列名称相同的current_value值并返回,从而获取到该序列的当前值;输入序列 名称,调用nextval存储过程,将表sequence中name与输入的序列名称相同的current_ value值,更新为current_value当前值与increment的值之和,并返回该值,从而获得该序 列的新序列号;输入序列名称、序列值,调用setval存储过程,将表sequence中name与输 入的序列名称相同的current_value值,更新为输入的序列值,并返回该值,完成设置该序 列的起始号。
3. 根据权利要求2所述的通用的数据库序列生成方法,其特征在于:主要包括如下步 骤: 第1步、创建数据库表sequence存储序列信息,包括序列名称name、阶值increment、 序列当前值current_value ; 第2步、包j建获取序列当前值的存储过程currval,该存储过程通过查询表sequence中 name与输入的序列名称相同的current_value值获取到该序列的当前值; 第3步、创建获取序列新序列号的存储过程nextval,该存储过程执行将表sequence 中name与输入的序列名称相同的current_value值,更新为current_value当前值与 increment的值之和的操作,并返回该值作为新的序列号; 第4步、包j建设置序列值的存储过程setval,该存储过程执行将表sequence中name与 输入的序列名称相同的current_value值,更新为输入的序列值的操作,设置该序列的起 始号。
【文档编号】G06F9/44GK104462206SQ201410610011
【公开日】2015年3月25日 申请日期:2014年10月31日 优先权日:2014年10月31日
【发明者】张远世, 孙傲冰, 季统凯 申请人:国云科技股份有限公司