当前位置: 首页 > 面试题库 >

mysql删除,自动递增

侯和惬
2023-03-14
问题内容

我在使用InnoDB的MySQL中有一个表,其中有一列名为“ id”的列。

所以我的问题是,每当我从表中删除最后一行然后插入新值时,新值都会在删除的ID之后插入。

我的意思是假设我的id是32,我想删除它,然后如果我在删除后插入新行,则列id会自动递增到33。因此序列格式被破坏了,即id =
30,31,33而且不是32。

因此,当我删除最后一列后插入时,请帮我分配ID 32(而不是33)。


问题答案:

简短答案:不可以。

为什么?

  1. 这是不必要的工作。序列号之间是否有间隔都没关系。
  2. 如果您不希望这样做,请不要使用auto_increment。
  3. 不用担心,我保证,如果您的列的类型为int甚至bigint,也不会用完数字。
  4. 删除行时MySQL不会自动降低autoincrement值的原因是有原因的。这些原因是
    • 数据完整性受损的危险(想象多个用户执行删除或插入…可能会出现重复条目​​,甚至更糟)
    • 使用主从复制或事务时可能会发生错误
    • 等等 …

强烈 建议您不要在此上浪费时间!确实非常容易出错。



 类似资料:
  • 问题内容: 我有一个带有主键字段且具有AUTO_INCREMENT的MySQL表。在阅读了这里的其他文章后,我发现人们遇到了同样的问题,答案也各不相同。有些人建议不要使用此功能,其他人则说它不能被“修复”。 我有: 示例:表中的记录数:18.如果我删除记录16、17和18-我希望输入的下一条记录的courseID为16,但是由于最后输入的courseID为18,所以它将为19。 我的SQL知识不是

  • 问题内容: 我正在将我的mysql db表从id(自动)更改为uid。 这是我得到的错误。 据我了解,我需要将ID更改为非自动增量,因为我将其作为主键了。更改列以删除主键和自动递增的语法是什么? 问题答案: 如果您需要在单个SQL语句中从列中删除自动增量和主键,则应该这样做: 实际上,您应该能够在单个查询中完成所有操作:

  • 问题内容: 我们希望从mySQL获取一个自动递增的ID,而无需实际存储它,直到其他与mysql不相关的进程成功完成为止,这样,如果发生异常或应用程序崩溃,就不会存储该条目。我们需要使用ID作为其他进程的密钥。本质上,我们要“保留”自动增量,并将最后一行插入到mySQL中。我们不希望在知道整个过程成功完成之前插入任何行。 可以在mySQL中进行这种自动增量保留吗? 注意:我了解SQL事务。但是,我们

  • MySql出现自动删除记录的现象。我有一张user表里面存储的很多个用户数据,id是逐渐,然后莫名奇妙的会删除user=123456的记录,别的都不删除,就123456.有没有大神知道。 提示:代码都审查过,没有删除的语句。 解决此类问题

  • 我有三种模式:有许多有许多。当我删除一个用户时,我希望自动删除他所有相关的帖子以及与这些帖子相关的评论。为了实现这一点,我在和模型中有以下代码: 当我删除一个用户时,他的所有帖子都会被删除,但是评论会被保留。为什么会发生这种情况?

  • 1)我在文件中定义了一个地址“我的地址”broker.xml: 2)我还禁用了自动删除地址(根据我的用例,这似乎没有必要,因为我的地址不是自动创建的) 据我所知,这个地址不是自动创建的,而且这个地址也不会像预期的那样被Artemis自动删除。 但是,一旦我有一个或多个消费者连接到与此地址匹配的队列,当这些消费者全部离开时,该地址将被删除: 为什么?我不明白为什么: 此地址被视为自动创建的 尽管有自