欢迎光临
我们一直在努力

在MSSQL中实现Sequence功能-数据库专栏,SQL Server

建站超值云服务器,限时71元/月

目的: 通过该功能取代 mssql 中的表id列自动递增功能

 

主题一:如何通过sequence名得到一个sequence值

方法:

1.    创建一个表sequence,保存sequence的值

2.    创建一个存储过程getnextsequence,以通过它得到下一个sequence

主题二:如何通过一个表名得到一个sequence值

1.    创建一个表tablesequence,保存表中的列对应的是哪个sequence

2.    创建一个存储过程createtableseq,把表tablesequence的内容放入全局临时表@@tmptablesequence,以提高性能

3.    创建一个存储过程getnextsequencebytablename,以通过它得到下一个sequence

 

主题一:如何通过sequence名得到一个sequence值

方法:

1.    创建一个表sequence,保存sequence的值

表sequence:

表名

数据类型

是否为空

索引

说明

seqname

varchar2(50)

n

pk

sequence名

startwith

number

n

 

开始值

increment

number

n

 

增量

lastvalue

number

n

 

该sequence最后的值

minvalue

number

n

 

最小值

maxvalue

number

n

 

最大值,0表示无

cycle

bit

n

 

是否可循环

 

2.    创建一个存储过程getnextsequence,以通过它得到下一个sequence

参数:

     seqname sequence名称

返回:

     下一个sequence的值,如出错,返回0

流程:

1.    该存储过程通过参数seqname从表sequence取得lastvalue

2.    lastvalue加上递增或递减值,得到下一个sequence值(简称@newseq)

3.    用@newseq更新该条记录

4.    返回@newseq

 

主题二:如何通过一个表名得到一个sequence值

1.    创建一个表tablesequence,保存表中的列对应的是哪个sequence

表tablesequence

表名

数据类型

是否为空

索引

说明

tablename

varchar2(50)

n

pk

表名

seqname

varchar2(50)

n

 

sequence名

 

2.      创建一个存储过程createtableseq,把表tablesequence的内容放入全局临时表@@tmptablesequence,以提高性能

参数:

     无

返回:

     无

流程:

1.    判断临时表@@tmptablesequence是否存在

2.      如不存在,创建该临时表(表格式同tablesequence),并从tablesequence取得数据, 放入临时表@@tmptablesequence

3.      创建一个存储过程getnextsequencebytablename,以通过它得到下一个sequence

参数:

      @tablename 表名

返回:

     下一个sequence的值,如出错,返回0

流程:

1.    该存储过程通过参数@tablename从表@@tmptablesequence取得sequence名(简称@seqname)

2.    通过@seqname从表sequence取得lastvalue

3.    lastvalue加上递增或递减值,得到下一个sequence值(简称@newseq)

4.      用@newseq更新表sequnce的对应记录
返回@newseq

以上是理论,稍后,我会给出具体做法。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 在MSSQL中实现Sequence功能-数据库专栏,SQL Server
分享到: 更多 (0)

相关推荐

  • 暂无文章