【问题标题】:ID's in phpmyadminphpmyadmin 中的 ID
【发布时间】:2011-05-02 11:23:55
【问题描述】:

我的 phpmyadmin 中有一个表,其中包含将发布在网站上的项目的一些数据。我正在手动将这些行添加到数据库中。我想显示发布项目的编号。第一个将是“1”,第二个将是“2”,等等。但是,如果我使用自动增量并删除第二行,则两者之间会有一个间隙。有解决此问题的建议吗?

我使用 PHP 来显示行的 ID,但是当第二个被删除时,它会显示间隙。

该结构以名为“id”的列开始,该列具有主键和自动增量。

【问题讨论】:

  • 你试图达到的目的是违背主键的目的。
  • 这是不可能的,正如@naiquevin 已经说过的,这从根本上违背了主键的目的。要点或主键是每条记录都有一个唯一的 ID。不能有两个具有相同 ID 的记录 - 这会破坏外部引用和依赖关系。
  • 感谢您的回答。这就是我想要实现的;我正在向数据库中添加行并在网站上显示内容。我想显示发布项目的编号。第一个将是“1”,第二个将是“2”,等等。但是,如果我使用自动增量并删除第二行,则两者之间会有一个间隙。有什么建议吗?
  • 您可以在显示项目时计算数量,使用简单的$i++ 这就是通常的做法

标签: php mysql sql phpmyadmin


【解决方案1】:

你不想那样做!时期。你会给自己制造很多问题。 您真正的问题在其他地方。你认为在你的 id 之间没有差距会解决它。以不同的方式解决该问题,但不理会自动递增的 id 列。这样做是有原因的。自动增量确保您永远不会混淆两个条目,如果有差距也没关系,您总是可以排序,您总是可以识别!如果您需要漂亮的直数,请将您的条目存储在数字数组中并使用键进行编号。或者使用 for 循环遍历您的条目并使用增量器进行编号,或者在您的数据库中引入一个订单列。

【讨论】:

    【解决方案2】:

    有解决此问题的建议吗?

    它没有坏!

    作为开发人员,您不应该关心或考虑数据库 ID,它是用于内部使用和数据完整性的。

    如果您真的想使用无间隔的递增数字,请在查询中使用:

    LIMIT 1 OFFSET X
    

    X 是您网址中的“id”(不是真实的 id)。

    但是,请听听这里的人反对这样做。这不是一个好主意,相信我,没有人会关心甚至注意到前向数据库 ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 2014-01-29
      • 2021-09-03
      • 2014-02-02
      • 2016-08-20
      • 2011-11-13
      • 2011-03-02
      相关资源
      最近更新 更多