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

如何在mysql中重用已删除的主键?

柳项明
2023-03-14
问题内容

我在mysql表中有一个名为“ id”的列,这也是自动递增的主键。

当我删除行时,其ID也会被删除,从而在我的ID序列中产生“空洞”,例如

1、2、3、9、10、30等

有没有办法重复使用这些已删除的ID:S?


问题答案:

使用:

ALTER TABLE [your table name here] AUTO_INCREMENT = 1

…将根据表中现有的最高现有值将auto_increment值重置为下一个。这意味着它不能用于校正多个间隙。

这样做的唯一原因是为了美观的记录-数据库不在乎记录是否是连续的,仅是它们始终保持相互关联。无需为了数据库而“更正”这些值。

如果id要向用户显示这些值,这就是为什么希望它们始终是顺序的,那么我建议添加一个代理键。使用代理键向用户显示,因此可以根据需要对值进行重新排序,但是参考完整性不会受到影响。在这种情况下,代理键将是一个整数列。



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

  • 问题内容: 我刚刚编译了一个包含100万个地名的数据库。我将在自动完成的小部件中使用它来查找城市。这些地方很多都带有重音符号…我希望能够在用户键入不带重音符号的名称时查找记录。 为了做到这一点,我在第二栏中有一个名字的重音符号。这些记录中的许多记录仍然是空白的,因此我想编写一个查询来填充它们。在直接的MySQL中可能吗?如果是这样,怎么办? 问题答案: 如果您为该列设置了适当的排序规则,则该字段中

  • 问题内容: 我已向客户提供以下查询,以删除重复的电话号码。记录在MSSQL数据库中,但现在他们也需要在MySQL上进行记录,并且他们报告MySQL抱怨查询的格式。我已经包含了一个测试表的设置,该测试表具有重复的代码示例,但是真正重要的是删除查询。 我在无知和紧急情况下问这个问题,因为我仍在忙于下载和安装MySQL,在此期间也许有人可以提供帮助。 问题答案: 通往罗马的途径很多。这是一。非常快。因此

  • 我正在使用mysql并试图删除外部约束,但我无法删除该密钥。 它的节目, 如何解决这个问题,请帮助我。

  • 问题内容: 我有一个包含以下字段的表: 现在,我需要删除具有same的行。一种方法是使用以下SQL以及脚本( ): 运行此查询后,我可以使用服务器端脚本删除重复项。 但是,我想知道是否只能使用SQL查询来完成。 问题答案: 一种简单的方法是在3列上添加索引。在编写语句时,请包含关键字。像这样: 这将删除所有重复的行。作为一项额外的好处,重复的将来会出错。和往常一样,您可能需要在运行类似内容之前进行

  • 问题内容: 我有这样的桌子 我想执行一个查询,以除去所有最新的重复项。我希望你有个主意吗? 例如,查询后的表必须是这样的 问题答案: 语法可能需要调整,但是应该做到这一点。此外,您可能希望将子查询预查询到其自己的表FIRST中,然后对该结果集运行DELETE FROM。