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

在MySQL中删除后自动递增

曹季同
2023-03-14
问题内容

我有一个带有主键字段且具有AUTO_INCREMENT的MySQL表。在阅读了这里的其他文章后,我发现人们遇到了同样的问题,答案也各不相同。有些人建议不要使用此功能,其他人则说它不能被“修复”。

我有:

table: course
fields: courseID, courseName

示例:表中的记录数:18.如果我删除记录16、17和18-我希望输入的下一条记录的courseID为16,但是由于最后输入的courseID为18,所以它将为19。

我的SQL知识不是很出色,但是是否可以通过查询(或phpMyAdmin界面中的设置)刷新或更新此计数?

该表将与数据库中的其他表相关。

鉴于所有建议,我决定忽略此“问题”。我将简单地删除和添加记录,同时让自动增量完成它的工作。我猜数字到底有多大无关紧要,因为它仅用作唯一标识符,并且没有(如上所述)
业务 含义。

对于那些可能对我的原始帖子感到困惑的人:我不想使用此字段来知道我有多少条记录。我只是希望数据库看起来整洁,并具有更多的一致性。


问题答案:

您尝试做的事情听起来很危险,因为这不是预期的用途AUTO_INCREMENT

如果您真的想找到最低的未使用密钥值,请不要使用AUTO_INCREMENT,并手动管理密钥。但是,这不是推荐的做法。

退后一步,问“ 为什么需要回收键值? ”未签名INT(或BIGINT)是否没有提供足够大的键空间?

18,446,744,073,709,551,615在应用程序的整个生命周期中,您是否真的会拥有比唯一记录更多的记录?



 类似资料:
  • 问题内容: 我在使用InnoDB的MySQL中有一个表,其中有一列名为“ id”的列。 所以我的问题是,每当我从表中删除最后一行然后插入新值时,新值都会在删除的ID之后插入。 我的意思是假设我的id是32,我想删除它,然后如果我在删除后插入新行,则列id会自动递增到33。因此序列格式被破坏了,即id = 30,31,33而且不是32。 因此,当我删除最后一列后插入时,请帮我分配ID 32(而不是3

  • 问题内容: 范围:两个表。创建新的顾客时,他们会将有关他们的一些信息存储到第二张表中(这也使用触发器完成,它可以按预期工作)。这是我的表结构和关系的示例。 表1-> 顾客 表2-> patron_info 管理员可以管理顾客。当他们选择移走顾客时,将顾客从 桌子1 移开。此时, 表2 没有任何反应。 我只是想创建一个触发器,以便在表1的项目已删除时从表2中删除。这是我尝试过的… 最初,我尝试删除触

  • 问题内容: 假设我有一个这样的架构: 如果删除一个人,那么仍然存在孤立的作业,这些作业引用了一个不存在的人,这在数据库中造成了混乱。 有没有一种简单的方法来确保删除一个人时,对该人的所有相应引用也将被删除? 问题答案: 您可以在架构上添加自己的Mongoose 中间件,以将该人从引用该人的所有其他文档中删除。在中间件功能中,就是要删除的文档。

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

  • 问题内容: 我有以下表模式,它将user_customers映射到实时MySQL数据库的权限: 我想删除user_customer_id和Permission_id的主键,并保留id的主键。 当我运行命令时: 我收到以下错误: 如何删除列的主键? 问题答案: 如果没有索引,则维护自动增量列会变得太昂贵,这就是为什么要求将自动增量列作为索引的最左侧部分的原因。 您应该在删除键之前删除autoincr