Py学习  »  DATABASE

表错误中的MySQL自动增量键

blackJuuls • 6 年前 • 2110 次点击  

所以我创建了一个表,其中有一列我声明EmployeeID为主键int,并自动递增,但问题是:

如果我删除一行,然后再插入一行,新的增量仍将计算在内 例如:

ID Name
1  jayden
2  karen

删除凯伦。。。

ID Name
1 jayden

插入新的

ID Name
1 jayden
3 nicolas

所以它基本上跳过了以前的ID。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54139
文章 [ 4 ]  |  最新文章 6 年前
Wijayanga Wijekoon
Reply   •   1 楼
Wijayanga Wijekoon    6 年前

删除行后使用此查询,

实际上,这就是MySQL的工作原理,这不是一个错误

Richard Matriche
Reply   •   2 楼
Richard Matriche    6 年前

你想要/需要一个可以对其他人重新生效的唯一标识符吗?

“Truncate”命令将删除所有数据并重置ID,也许这就是您要找的

Lajos Arpad
Reply   •   3 楼
Lajos Arpad    6 年前

这不是一个错误,这是MySQL使用auto_increment的方式。它存储它在插入时给出的最后一个值并将其递增。每次插入时都可以得到最后一个ID

insert into yourtable(id, Name)
select id + 1, 'foo'
from yourtable
where id = (select max(id) from yourtable);
Matheus Gomes
Reply   •   4 楼
Matheus Gomes    6 年前

这是因为自动增量是表的一个独立属性,它只在分配新的ID时使用,而不依赖于表上最后一个存在的ID。这是为多少关系数据库而设计的,不仅仅是MySQL。

要实现您想要的目标(它似乎有一个没有“洞”的顺序ID),您需要查询最后一个ID并对其进行增量设置。

前任:

SELECT id from Users ORDER BY id DESC LIMIT 1

setting the auto_increment of your table 根据你最后的身份证。

请注意,这两种方法在执行上都不明智。您应该坚持使用自动增量默认行为,因为它是最佳的,除非您有一些 对于 .