有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何更改主键自动递增,以便在删除行时不会跳过值

我正在为学校做作业,我希望我的主键(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;
}

我也不是问为什么不应该这样做,而是问是否可能


共 (2) 个答案

  1. # 1 楼答案

    自动递增的全部意义在于,你不必为自己计算。当您查询数据库时,您应该使用另一列(如名称、年龄或其他内容),然后从结果中可以获得该行的id。所以追踪身份证真的没有意义

  2. # 2 楼答案

    这不是你能做的。这也不是你在现实世界中想要做的事情。如果可以重用键,那么每次添加新记录以查找可用键(您看到的功能只是跟踪生成的最高键值的结果)时都必须进行完整表扫描,这将对性能造成重大影响。更不用说,在对更复杂的数据库禁用外键约束的情况下,可能会导致数据不一致

    因此,就我所知,这并不是一种内置于任何数据库中的能力。想要这样做有什么原因(除了美学)吗