【问题标题】:primary keys continue adding id numbers like deleted items here主键继续在此处添加 id 编号,例如已删除的项目
【发布时间】:2014-04-12 02:43:10
【问题描述】:

当我在 mysql(phpmyadmin) 中的一列中创建一个新表时,例如

 id TEXT auto_increment primarykey

所以当我开始添加项目表 id 列时 1 2 3 4 5 ..... 好的,到目前为止没问题。

假设在我的表中我的 id 为 1 到 45。假设我删除了 id 的 41、42、43、44 和 45。然后我将另一个项目添加到表中。 id 从 46 开始,但我希望它们继续像 41 42 43 .... 一样。

phpmyadmin 中是否有选项部分?

【问题讨论】:

  • 如果您不想要它,为什么要使用“auto_incement”?您可以在创建中省略“auto_incement”并使用 select max(id) + 1 from ... 来获取插入新项目的最后一个 id。但是如果你删除了id的2、4、6、8呢?
  • 在这种情况下,id(身份)列是一个代理键,它应该没有其他用途然后唯一地标识一行。如果您需要它来满足其他标准,那么您通常做错了什么。在某些分布式数据库(例如 Teradata)中,您不知道“下一个”值将是什么,并且您永远不需要这样做,只是该值是唯一的。也许如果您能解释为什么您希望所有值都是连续的,我们可以建议不同的模式来满足您的功能需求。但这不太可能是这样。

标签: mysql sql phpmyadmin


【解决方案1】:

您可以发出命令来重新设定身份字段:

alter table mytable auto_increment=41;

但是,这样做确实没有多大意义。数字键就是这样 - 它们不需要是连续的。

【讨论】:

    【解决方案2】:

    这很正常,我在其他 RDBMS 中也看到过。

    这是设计使然,我认为您无法为所欲为。

    【讨论】:

      【解决方案3】:

      不,这不是 auto_increment 的工作方式。不过,您可以在 MySQL 中重置 auto_increment 指针,这可能会满足您的需求,具体取决于您的用例。

      set auto increment initial value for mysql table

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-10
        • 2021-03-08
        • 1970-01-01
        相关资源
        最近更新 更多