删除一条记录后,可是他还占有的主键的序列号,新进入的记录又要增加递增,怎么办?

我在一个表里把主键定义为标识,其递增为1,当我增加一条记录时,其主键为1,可是我要删除这条记录,当我再插入一条记录时,此时该记录的主键序序列号为2了。我应该怎样改变这种状况?各位有何见解?
---------------------------------------------------------------

1。若全部删除,用:TRUNCATE TABLE TABLENAME;不要用DELETE TABELNAME
2。在数据多时,只删除一条。就会出现标识缺少的现象,一般可以不用管他。若想连续,就要重新将数据导一遍
select * into #temp from tablename
truncate tablename
insert into tablename select * from #temp
drop table #temp

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

是的,没有其他办法的。这就是这样的
---------------------------------------------------------------

你可以不使用自增长的ID作主键,你人为的来控制ID的增长。
---------------------------------------------------------------

SET IDENTITY_INSERT TableName ON

insert TableName(cols_Zizeng,...)
values (1,...)

SET IDENTITY_INSERT TableName Off
建议察看帮助:SET IDENTITY_INSERT
---------------------------------------------------------------

如果你删掉了最后一条记录,但还要用序号的话,可以在删掉后运行dbcc checkident来恢复记数
---------------------------------------------------------------

dbcc checkident
---------------------------------------------------------------

建议你不要打乱sql
你如果非要的话,你干脆不要设标识
自己写触发器按max(编号)+1的规则搞!

如果你还坚持的话你只有显示插入:
SET IDENTITY_INSERT 表名 ON ---关闭标识
insert .......
SET IDENTITY_INSERT 表名 OFF

或用DBCC CHECKIDENT (表, RESEED, 1)重建标识,但消耗太大!!!

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus