如何更改主键自动递增,以便在我删除行[重复]时不会跳过值

问题描述 投票:1回答:2

这个问题在这里已有答案:

我正在为学校做这个功课,我希望我的主键(id)能够进入1,2,3等等。但如果我删除一行并添加一个新人,它会跳过该号码。

这是我在mySQL工作台上的查询

CREATE TABLE IF NOT EXISTS person
(
id              int(11)         NOT NULL auto_increment primary key,
first_name      varchar(45),
last_name       varchar(45)
);     

我不确定我要去哪里以及要改变什么。

我的addPerson语句是这样的:

public Person addPerson(Person p){

String sql = "INSERT INTO person (first_name, last_name) VALUES(?,?) ";

template.update(sql, p.getFirst_name(), p.getLast_name());

return null;
}

我也不会问为什么不应该这样做,而是如果可能的话

java html mysql spring auto-increment
2个回答
0
投票

自动增量的全部意义在于您无需自己计算。当您查询数据库时,您应该使用另一列来执行此操作(如名称,年龄或其他内容),然后从结果中获取该行的ID。所以跟踪身份确实没有意义


0
投票

那不是你可以做的事情。在现实世界中,你也不想做任何事情。如果可以重复使用密钥,那么每次添加新记录以查找可用密钥时,都会导致必须执行全表扫描的显着性能损失(您只能跟踪生成的最高密钥值所看到的功能) 。更不用说在为更复杂的数据库禁用外键约束的情况下,最终会出现不一致数据的风险。

因此,这不是我所知道的任何数据库中内置的能力。是否有理由(除了美学)想要这样做?

© www.soinside.com 2019 - 2024. All rights reserved.