数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
在MSSQL中实现Sequence功能

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

目的: 通过该功能取代 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


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



相关文章

相关软件