0

我在 mysql 数据库中创建了一个表用于测试目的。id 是自动递增的。这样做之后(不在一起)

delete from test where id=4;
alter table test auto_increment = 4;
insert into test(nume) values('dan');

它没有给出任何错误。但最后一个 id 是 5,而不是 4。这不应该工作吗?

4

3 回答 3

2

删除后写这个查询

ALTER TABLE tablename AUTO_INCREMENT = 1
于 2013-09-20T12:07:41.817 回答
0

问问自己,是否需要更改主键。在大多数合法情况下 - 不。

这将部分起作用,一旦您插入一行,ID 将为 4,但 auto_increment 将更改为 5。

结果,下一行插入会给你一个主键重复错误。

于 2013-09-20T12:06:26.570 回答
0

整个过程仅在您删除具有最高 id 的记录的情况下使用。如果删除 where id=2,则无法更改自动增量 ID。无论出于何种原因,您都不希望在 id=4 处的 id 行中出现间隙,如果删除 id =2,则会出现间隙。那么,为什么在添加新记录 id =5 后会出现同样的差距时会弄乱 id。

但是赛车条件呢?您删除记录 id=4。两毫秒后,我添加了一条记录,得到 id=5。自动增量 id 会发生什么?

有什么正当理由可以避免这些差距?

于 2017-07-05T22:35:04.370 回答