关于sql server 自动编号问题

请问大家是如何解决sql server 自动编号问题的,谢谢!!
2024-11-23 05:47:57
推荐回答(2个)
回答(1):

你创建一个表,把其中一个列(比如“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的代码就不写了,自己悟吧。

回答(2):

自动编号有什么问题?
设为关键字,然后在属性里双击标识那一栏就可以了啊