Sqlserver怎么才能保证把自增id删除过记录的自增id重新用在新插入的记录呢。
比如自增id为12345的5行记录删除了第五行再insert一行新增的id就是6了能不能让他还是5呢
以前好像听说自增id的计数被保存在一个系统表里~~是哪个表有人知道么~能不能执行del的写个触发器重置下哪个自增id的记录数据呢。。。
分不太多久放了5分~~~谢谢了
如果你是要删除所有的数据后 新增数据时自增列重置。。。你可以用 TRUNCATE TABLE 表名。
其他的我就不知道了。。。
我也是新手。。祝你早日解决问题。。
DBCC CHECKIDENT ("表名", RESEED, 1);
GO
说真的,我也是有过这样的想法,但这是一个不切实际的。
假如这个自增ID只是自增ID,那么没有什么问题,但是,假如这个自增ID还是另外一个表的外键呢?此时,再使用楼上的方案重置自增ID的后果将是很严重的。
微软的建议,在生产环境中严禁这样做。
数据库设ID列计为不自增,插入用事务包含起来,基本流程:
1、select max(id)=临时变量 得到当前最大的id。
2、insert(注意,id+1)
3、再次 select max(id),判断得到值是否为 临时变量+1.
如上步骤如有任意一步错误,则回滚整个事务。
注意:生产环境请慎重考虑,最好不要使用,这样做效果不高,且连续的ID,除了“漂亮”一点外,没有其他的好处,ID的作用就是数据的身份证,只要编号不重复,是不是连续的无所谓的,没必要为了“好看”,降低系统性能。大数据量的时候,select max(id)很耗时的。
Set identity_insert table_name on
Insert into yourtable(id,xxx) values(5,XXX)
Set identity_insert table_name off
不要用自增的主键,改用触发器来创建主键。