【发布时间】:2011-06-05 08:23:18
【问题描述】:
我的问题是:我有一个带有 auto_increment 列的表。当我插入一些值时,一切正常。 插入第一行:ID 1 插入第二行:ID 2
现在我想在 ID 10 处插入一行。
我的问题是,在此之后只有在 ID 10 之后插入的行(这是正常行为)。
但我希望数据库在创建之前先填充 ID 3-9。
有什么建议吗?
编辑:
澄清一下:这是我想为自己构建的 URL 缩短器。 我将 id 转换为一个单词(a-zA-z0-9) 以进行搜索,并将其保存在数据库中,我将其转换为一个数字,即表的 ID。
现在的问题是: 我缩短了第一个链接(没有名称)-> ID 为 1 并且自动名称为 1 转换为 a-zA-Z0-9 这是一个
接下来也是一样——>ID是2,名字是b,是2转换的。
接下来有趣的是,有人想将链接命名为test -> ID 是4597691,这是转换后的test
现在,如果有人添加另一个没有名称的链接 -> ID 为 4597692 which 将是 tesu,因为数字已转换。
我希望新行将自动插入到最后一个空白处(此处为 3)
【问题讨论】:
-
你为什么想要那个? id 3-9 丢失有什么问题?
-
我真的很想知道你为什么会遇到这样的情况。这最终可能会成为一个非常烦人的问题,它与您存储的实际数据无关(考虑到这些 ID 只是内部的)。另外,看看 UUID 是否是您正在寻找的替代品
-
我正在尝试制作自己的链接缩短器。我将 id 转换为 url 名称并返回。如果我用名字 JohnDoeJohnDoe 建立一个短链接,那么下一个想要随机名字的人将会有 JohnDoeJohnDof,那可能太长了。
-
@gluca,这将使您的插入变慢,通过对丢失键的无用测试来减慢您的数据库,没有任何好处。需要发生的事情是 id 是唯一的。如果您重用以前使用的 id,您还将面临各种参考问题。当 MySQL 删除一个数字时,顺序编号会中断。这是一个非常糟糕的主意。
-
@gluca:我看不到
1、2、3、10和JohnDoeJohnDoe之间的联系……
标签: mysql sql auto-increment