在MSSQL中实现Sequence功能

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

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

时间: 2024-09-17 03:54:36

在MSSQL中实现Sequence功能的相关文章

db2中的Select语句如何实现MSSql中Select Top n的语法功能?

问题描述 db2中的Select语句如何实现MSSql中Select Top n的语法功能? 解决方案 Select Top在不同数据库中的使用用法: 1. Oracle数据库 <CENTER><CCID_NOBR> SELECT * FROM TABLE1 WHERE ROWNUM<=N 2. Infomix数据库 SELECT FIRST N * FROM TABLE1 3. DB2数据库 SELECT * ROW_NUMBER() OVER(ORDER BY COL1

ios-需要在IOS中设置延迟功能

问题描述 需要在IOS中设置延迟功能 需要一个延时器,进行23秒的延迟然后执行函数.应该怎么实现?用不用NSTimer? 解决方案 performSelector: withObject: afterDelay: 解决方案二: 简单点的话,使用performSelector: withObject: afterDelay: 方法 [self performSelector:@selector(delayMethod:) withObject:nil afterDelay:23];

Python的Flask框架中实现分页功能的教程

  这篇文章主要介绍了Python的Flask框架中实现分页功能的教程,文中的示例基于一个博客来实现,需要的朋友可以参考下 Blog Posts的提交 让我们从简单的开始.首页上必须有一张用户提交新的post的表单. 首先我们定义一个单域表单对象(fileapp/forms.py): ? 1 2 class PostForm(Form): post = TextField('post', validators = [Required()]) 下面,我们把这个表单添加到template中(file

java struts2-怎样利用Java 中的struts2框架实现数据库中用户登录功能?

问题描述 怎样利用Java 中的struts2框架实现数据库中用户登录功能? 在Action中LoginAction怎样写? 配置文件中怎样写? 总体实现能够使数据库中已经存在的用户凭自己的密码与用户名登录成功呢?数据库是Oracle数据库.

在自制主页中实现搜索功能

  Internet海洋的确波澜壮阔.博大精深, 也正是因为它的波澜壮阔和博大精深而使得许多初次上网的小网虫们被扑面而来的信息打得晕头转向,最终两手空空.一无所获. 有经验的网友们并不满足一个网址上的信息, 同时还要参考其他同类网址上的信息进行比较,以保证所掌握的资料最全面.最准确,这就要能找到包含您所需信息的所有网址. 使用过任一搜索引擎的网友都知道这些问题在这里都非常简单.本文并不是教您如何使用搜索引擎, 而是告诉您如何在自己的主页中调用这些搜索引擎.在自制主页中调用搜索引擎要解决的关键问题

PHP中的加密功能

加密 数据加密在我们生活中的地位已经越来越重要了,尤其是考虑到在网络上发生的大量交易和传输的大量数据.如果对于采用安全措施有兴趣的话,也一定会有兴趣了解PHP提供的一系列安全功能.在本篇文章中,我们将介绍这些功能,提供一些基本的用法,以便你能够为自己的应用软件中增加安全功能. 预备知识 在详细介绍PHP的安全功能之前,我们需要花点时间来向没有接触过这方面内容的读者介绍一些有关密码学的基本知识,如果对密码学的基本概念已经非常熟悉,就可以跳过去这一部分. 密码学可以通俗地被描述为对加/解密的研究和实

如何在SQL中启用全文检索功能?(实例)

全文检索 如何在SQL中启用全文检索功能? -------------------------------------------------------------------------------- 全文索引的一个例子,在查询分析器中使用:use pubsgo--打开数据库全文索引的支持execute sp_fulltext_database 'enable'go--建立全文目录ft_titlesexecute sp_fulltext_catalog 'ft_titles', 'creat

实例演示在MSSQL中启用全文检索

全文检索 如何在SQL中启用全文检索功能?本文将通过实例向你剖折这个问题.这是一个全文索引的一个例子,首先在查询分析器中使用:www.c hinaitpower.coml1odLWyQ use pubs go www.c hinaitpower.coml1odLWyQ --打开数据库全文索引的支持www.c hinaitpower.coml1odLWyQ execute sp_fulltext_database ''enable'' go www.c hinaitpower.coml1odLWy

在您的网站中加入互动功能

如何在您的网站中加入互动功能(TRANSACTION)呢? IIS(Internet Information Server)与MTS(Mircrosoft Transaction Server)紧密配 合,数据库的更改有"同生共死"的互动(TRANSACTION)功能. 当ASP程序中所有的数据库的变更都成功时,才算成功:有一个数据库的更改失败时, 已经更改的数据库资料将自动恢复(rollback),这就是所谓的互动(TRANSACTION)功能. 比如从甲帐户汇款到乙帐户时,若乙帐户