这个问题在这里已有答案:
我正在为学校做这个功课,我希望我的主键(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;
}
我也不会问为什么不应该这样做,而是如果可能的话
自动增量的全部意义在于您无需自己计算。当您查询数据库时,您应该使用另一列来执行此操作(如名称,年龄或其他内容),然后从结果中获取该行的ID。所以跟踪身份确实没有意义
那不是你可以做的事情。在现实世界中,你也不想做任何事情。如果可以重复使用密钥,那么每次添加新记录以查找可用密钥时,都会导致必须执行全表扫描的显着性能损失(您只能跟踪生成的最高密钥值所看到的功能) 。更不用说在为更复杂的数据库禁用外键约束的情况下,最终会出现不一致数据的风险。
因此,这不是我所知道的任何数据库中内置的能力。是否有理由(除了美学)想要这样做?