【问题标题】:Mysql id auto increment not null sift up when row deletes [duplicate]删除行时,Mysql id自动增量不为空筛选[重复]
【发布时间】:2014-01-09 04:29:53
【问题描述】:

我在 Internet 上无处可去。我想在删除行时向上移动行(更改行的 ID)。喜欢:

标识值 1个edt55tgge 2 edgg545re 3 gt5edbeg4 4 e98i7thde 5 455t44ede

当我删除第 2 行和第 4 行时,表格应该变成

标识值 1个edt55tgge 2 gt5edbeg4 3 455t44ede

我正在使用 id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,这变得不可能。 请帮忙。

【问题讨论】:

  • 使用AUTO_INCERMENT 这几乎是不可能的。
  • id 是您的主键 - 这意味着所有其他具有 FK 的表也必须以某种方式神奇地“转移”。更不用说任何其他拥有不再是幂等的过时代理密钥的客户的不便了。

标签: php mysql sql


【解决方案1】:

这不是自动递增列的工作方式,您最好让它自行排序。

添加另一个 INT 列,称为 my_id,并将其用于您想做的事情。

编辑:您也不能总是保证自动增量值将是连续的,一些云提供商的自动增量键会因为镜像和集群等而在 10 或 20 中跳跃...最好不要惹他们.

【讨论】:

  • 你的意思是说我应该只使用INT NOT NULL PRIMARY KEY
  • 我认为最好的做法是拥有一个自动递增的主键,只需添加一个“附加”INT 列,然后自己管理该列。留下自动增量列来做这件事。
【解决方案2】:

您不应该修改自动增量。它是数据库设计的一部分。您应该使用另一个列名作为标识符。需要添加另一列。

如果你在 php 中使用它,那么最好为列做一些代码功能(不是 auto_incremented)。 谢谢

【讨论】:

    猜你喜欢
    • 2015-09-28
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 2011-12-06
    • 2018-01-24
    • 1970-01-01
    相关资源
    最近更新 更多