Mysql SQL保存已删除行的主键
我有一个自动递增的主键“student_id”,在表中插入了一行。它使学生id等于1。然后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
我删除了这一行
并插入了新行。新行的学生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;
但是,如果你这样做,你可能会把事情搞得一团糟。在获得自动递增值的联接操作的经验之前,请不要执行此操作