当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 解决SQLServer最大流水号的两个好方法

MSSQL
用Oracle和SQL Server数据库组合利弊分析
3个SQL视图搞定所有SqlServer数据库字典
使用SQL Server数据库的查询累计值
如何维护SQL Server的“交易日志”
SQL Server扩展存储过程实现远程备份与恢复
SQL Server 的存储过程
SQL Server 数据库嵌套子查询
如何使用SQL 事件探查器?
SQL Server 2008的新压缩特性
改进SQL Server数据库系统安全五步走
把SQL数据库部署到远程主机环境
SQL Server 2008综合数据可编程性
SQL Server 2005 数据维护实务
详细介绍微软SQL Server 2008
SQL Server数据库管理常用的SQL和T-SQL语句
从算法入手讲解SQL Server典例实现过程
ASP.NET连接Access和SQL Server数据库
SQL Server如何识别真实和自动创建的索引
SQL Server 2005数据转换服务的疑难解答
利用SQL Server 2005同义字缩短开发时间

MSSQL 中的 解决SQLServer最大流水号的两个好方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 148 ::
收藏到网摘: n/a

解决SQL2000最大流水号的两个好方法

问:请问怎样才能解决ms serer 2000 最大流水号的问题?

答:我可以介绍两种方法给你:

方法1:使用SCOPE_IDENTITY取得刚刚插入的最大流水号


/*建立traddeinfo表各相关索引,注意Trade_id字段必段是identity型*/

create table Tradeinfo(Trade_id int identity(1,1),Tdtime datetime Tdname varchar(20))

create index idx_trade_id on tradeinfo(trade_id)

/*使用scope_identity()中断函数,取得当前脚本范围内最后insert进去的identity值*/

declare @mytradeid int

set @mytradeid=0

begin transaction

insert into tradeinfo values(getdata(),'test')

select @mytradeid = Scope_identite()

commit transaction

/*把@mytradeid 变量中存放的流水号显示出来*/

select @mytradeid
 
方案2:结合uniqueidentifier和identity取得最大流水号


/*创建辅助表 id字段是identity类型,global_id是gudi类型*/

cretate table max_tradeid(id int identity(1,1),global_id uniqueidenfier)

/*创建索引以加速后面的select 语句*/

create index idx_guid on max_trade_id(global_id)

declare @mytradeid int.,@myglobal_id uniqueidentifier

set @mytradeid = e-1

/*利用newid ()函数取得一个全局叭一guid .由于guid的特性,不用别的并发进程会产生同样的guid值 */

jselect @myglobal_id = newid()

insert into max_trade_id values(@myglobl_id)

/*使用全局唯一guid得到刚刚插入的id值*/

select @mytradeid = id from max_trade_id  where globl_id =@myglobal _id

selecgt @mytradeid
 
注:这种方法的好处是:它的并发性好,不会引起阻在塞,而且保证了insert语句肯定执行成功,这种方法的缺点是多一个guid。