如何解决sql server 自动编号问题

作者:来自网络


你创建一个表,把其中一个列(比如“ID”)的“标识列”属性设为“是”,然后设置它的种子(初始值)、递增量。比如你按默认设定种子为1、递增量为1,那么生成的ID序列就会是:1、2、3、4、……

在记录不是特别多(>1000万条)时,这个值是唯一的,也就是不会出现两者相同的情况。

但这样会有一个问题,比如你顺序生成了10条记录:

1、2、3、4、5、6、7、8、9、10

然后你删除了3号记录,这样剩下的记录就是:

1、2、4、5、6、7、8、9、10

如果你希望编号是从1累加到,中间不隔断,那你就要设定另一个非标识列比如“number”。然后在添加新记录时使用:

select @number=max(number) from tablename

insert tablename(number) values(@number+1)

------------------------

以上使用SQL语句示范,假定你使用存储过程操作数据库,如果你使用ASP,就这样:

psql="select max(number) as maxnumber from tablename"

rs.open psql,conn,3,3

maxnumber=rs("maxnumber")

将最大number值读出,然后加1,再用于你的数据添加语句。

------------------------

这样就可以手动生成编号了,然后在删除记录的时候这样写程序:

' 假定要删除的记录编号为@n

delete tablename where number=@n

update tablename set number=number-1 where number>@n

这样就会在删除记录后重新整理编号顺序了。同样是SQL语句示范,用ASP+SQL的代码就不写了,自己悟吧。

————————————————

版权声明:本文为CSDN博主「qingyundys」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qingyundys/article/details/1733432

发布于:2022-12-3 已被阅读: 次 
回目录