Mysql SQL保存已删除行的主键

Mysql SQL保存已删除行的主键,mysql,sql,Mysql,Sql,我有一个自动递增的主键“student_id”,在表中插入了一行。它使学生id等于1。然后我删除了这一行并插入了新行。新行的学生id为2,而不是1。为什么?如何改变它 我试过: ALTER TABLE students DROP PRIMARY KEY, ADD PRIMARY KEY (student_id); 但是它没有结果。您不应该修改自动递增键的值。它们是用来唯一地标识记录的,主键中可能有空白,而不会产生任何后果 从MySql: 要重置当前自动增量值,请执行以下操作: `ALTER T

我有一个自动递增的主键“student_id”,在表中插入了一行。它使学生id等于1。然后
我删除了这一行
并插入了新行。新行的学生id为2,而不是1。为什么?如何改变它

我试过:

ALTER TABLE students DROP PRIMARY KEY, ADD PRIMARY KEY (student_id);

但是它没有结果。

您不应该修改自动递增键的值。它们是用来唯一地标识记录的,主键中可能有空白,而不会产生任何后果

从MySql:

要重置当前自动增量值,请执行以下操作:

`ALTER TABLE t1 AUTO_INCREMENT = 13`; 
不能将计数器重置为小于或等于 当前正在使用的值


因为这就是自动增量在MySQL中的工作方式。它从不两次指定相同的id值。如果确实需要,您可以尝试通过从PK列中删除自动增量并手动指定学生id值来更改当前行为。不过我不推荐这种方法,出于一致性的原因,我会坚持使用自动递增的值。

这就是
自动递增的工作原理
,它在每次
插入后都会增加。它永远不会填补删除某些记录后留下的漏洞

如果删除后确实要重用
学生id=1
,可以使用
插入学生(学生id)值(1)


自动递增键就是这样工作的。每个自动递增操作都保证返回一个新的唯一值。数据库服务器中没有内置逻辑来尝试确定某些值是否可重用,因为它们的行已被删除

为什么不呢?这些键值通常存储在其他表中(实现关系数据库管理系统的关系部分)。如果重用它们,关系将被破坏

可以使用重置下一个自动增量值

ALTER TABLE table_name AUTO_INCREMENT = value;
但是,如果你这样做,你可能会把事情搞得一团糟。在获得自动递增值的联接操作的经验之前,请不要执行此操作