读书人

求教一个避免关于生成流水号重复的有关

发布时间: 2012-03-21 13:33:15 作者: rapoo

求教一个避免关于生成流水号重复的问题
现在的系统生成流水号一直存在不生相同流水的,想修改现有的存储过程。提出了1种方法

增加StartValue的, 避免差产生的流水号

DECLARE @startValue numeric
update basedb_m..commonstart set @startValue = startvalue = startvalue + 1
where tablename = 'ErrorLog ' and colname is null and startdate = '2004-01-08 12:10:10.073 '
print @startValue

我是考虑如果用这种方法的话,是不是有了多对磁盘的开销?

同时问问大家这种方法好不好,或怎么改进?




[解决办法]
为什么不用identity字段呢?
[解决办法]
可以把流水号保存到一个单独的表中,在真正追加数据时才更新最大流水号+1
[解决办法]
可以把流水号保存到一个单独的表中,在真正追加数据时才更新最大流水号+1

UP
[解决办法]
用identity字段不行吧,有要除,有是一月流水。用存程。
可以把流水号保存到一个单独的表中,在真正追加数据时才更新最大流水号+1
方法是好的。

[解决办法]
要不在table上建促器?似乎也有起到列的作用??
[解决办法]
流水号的通用做法是:
记录新增时取最大值
当删除当前记录时,update当前删除记录以下的所有记录的流水号-1
[解决办法]
identity 或者 用个表保留当前最大LSH
[解决办法]
约束或主键啊?
[解决办法]
建个表来存当前最大值和步长,获取的时候用行级锁,保证唯一性
select ?
from tblCommonNumberRange with(rowlock)
[解决办法]
你的方法已经足够好了。
[解决办法]
可以把流水号保存到一个单独的表中,在真正追加数据时才更新最大流水号+1
---------------------------------------
方法不错!这样可以解决在Form上添写主从表的信息,注意:如果锁设置不当,会锁定最大值表!

读书人网 >SQL Server

热点推荐