日期:2014-05-18  浏览次数:20615 次

如何在SQLSERVER删除记录后重新编号?
表 "遥测数据表 "中有一字段 "编号 "自动编号的.请问如何在删除一记录后重新自动编号?我找过资料好像是这样子的:先增加一列新的自增列:
                                                      ALTER   TABLE   表   ADD   列名   int   IDENTITY(1,1)
                                                      再把原来的列删除:
                                                      ALTER   TABLE   表   DROP   COLUMN   原列名
这样重新编号后,增加的列是不是在数据库里原来被删除列的位置?如果不是怎么改?
还有在增加记录时,编号是不是接着上面的编号往下排的?请大家给点语句哈,要完整点哦!

------解决方案--------------------
实在有必要,就在在企业管理器里操作吧,删除标识列,再插入标识列。

既然可以重排标识,这个列顶多是个主键标识,似乎又没有必要重排。
------解决方案--------------------
这样重新编号后,增加的列是不是在数据库里原来被删除列的位置? 不是
------------------------------
如果不是怎么改? 没有必要吧
----------------------------
还有在增加记录时,编号是不是接着上面的编号往下排的? 是的
------解决方案--------------------
比如说现在是20条记录,你把11至20条给删除了,那再增加记录的话也只会从21开始编号,
因为是自动编号且不能重复,所以编过的号,后边就不会再出现了,
想要再次插入11至20这10个编号的话,我想只能在EXCEL中进行编号,然后再把数据导入到数据库中,就可以了
------解决方案--------------------
把主键设为自动增长,在另加一字段作为编号,控制这一列的就可以了
------解决方案--------------------
先增加一列新的自增列:
ALTER TABLE 表 ADD 列名 int IDENTITY(1,1)
再把原来的列删除:
ALTER TABLE 表 DROP COLUMN 原列名
这样重新编号后,增加的列是在数据库里原来被删除列的位置.
------解决方案--------------------
有一字段 "编号 "自动编号的.删除一记录后重新自动编号?

================
如果是这样的,编号不用自动编号(自动编号这里是不是已经失去意义?),每次插入数据时查找空闲的编号。
------解决方案--------------------
我的方法是删除记录的时候先排序,然后将删除的那个位置后面的所有记录自动-1或者按照你的规则减少一位,这个可以放在删除的存储过程当中,也可已放在触发器中
------解决方案--------------------
--设置
set identity_insert 遥测数据表 on
insert into 遥测数据表 values(被删除的编号,)
set identity_insert 遥测数据表 off
------解决方案--------------------
pwxiangfan() 的是对的
set identity_insert 遥测数据表 on
insert into 遥测数据表 values(被删除的编号,)
set identity_insert 遥测数据表 off