SQL自增字段,有数据删除后,如何实现自增字段的连续

2024-12-04 13:53:48
推荐回答(5个)
回答1:

自动实现比较困难。

你就不能自增长的值为序号。
用存储过程来实现。

回答2:

1.先取消主键的自增长,alter table 表名 change id id int primary key ;
2.调整数据id顺序 update 表名 set id = id - 1 where id > 10;
3.建议删除一遍后面的空数据,delete from 表名 where id > 1000;
4.把主键自增长设置回来,alter table 表名 change id id int primary key auto_increment;

回答3:

序号3已经生生了,虽然删除了,但删除的只是表记录,数据库已经记录了id,所以再次插入记录会从4开始。可以不用数据库自带的自增序列,改用自己创建序列。

回答4:

对于自增字段确实有这个问题,也无法改变,这是由于自增字段的值是内部计算,每使用一次都会自动+1,有点类似线序,你可以使用如下两种方法解决:
1、自增字段改为不用手工增加,每次都取最大值+1来存储
2、不改自增字段类型,采用逻辑删除的方法,比如在表中增加一个字段isdel(1表示已删除,0或者其它值表示没有删除),记录当前记录是否属于删除状态,

回答5:

跳号对你的数据也没影响;如果你感觉很不爽的话你可以自己做自增效果,每次去除表中自增字段的最大值加一咯;
sql server自带的自增效果就是这样,使用过的序号将不再使用。除非你每次删除最后一条记录重置一下重新开始自增;