我在 mysql 数据库中创建了一个表用于测试目的。id 是自动递增的。这样做之后(不在一起)
delete from test where id=4;
alter table test auto_increment = 4;
insert into test(nume) values('dan');
它没有给出任何错误。但最后一个 id 是 5,而不是 4。这不应该工作吗?
我在 mysql 数据库中创建了一个表用于测试目的。id 是自动递增的。这样做之后(不在一起)
delete from test where id=4;
alter table test auto_increment = 4;
insert into test(nume) values('dan');
它没有给出任何错误。但最后一个 id 是 5,而不是 4。这不应该工作吗?
删除后写这个查询
ALTER TABLE tablename AUTO_INCREMENT = 1
问问自己,是否需要更改主键。在大多数合法情况下 - 不。
这将部分起作用,一旦您插入一行,ID 将为 4,但 auto_increment 将更改为 5。
结果,下一行插入会给你一个主键重复错误。
整个过程仅在您删除具有最高 id 的记录的情况下使用。如果删除 where id=2,则无法更改自动增量 ID。无论出于何种原因,您都不希望在 id=4 处的 id 行中出现间隙,如果删除 id =2,则会出现间隙。那么,为什么在添加新记录 id =5 后会出现同样的差距时会弄乱 id。
但是赛车条件呢?您删除记录 id=4。两毫秒后,我添加了一条记录,得到 id=5。自动增量 id 会发生什么?
有什么正当理由可以避免这些差距?