gpt4 book ai didi

php - 简短的唯一 ID 与自定义 ID 混合

转载 作者:行者123 更新时间:2023-11-29 00:41:15 25 4
gpt4 key购买 nike

我有一个包含元素的表格。每个元素都有一个唯一的id和一个唯一的short id,称为short。看起来例如像下面这样:

id=>short
1 => 1
9 => 9
10=> a
37=> B

等短 ID 是通过 php 函数生成的。

我现在要做的是让用户设置自己的自定义短裤。假设第 38 位用户希望他的短消息是“foobar”。简单的解决方案是:

10=> a
37=> B
38=> foobar
39=> D

但那样我会失去 C 。如果许多用户决定使用自定义短 ID,那么最终会丢失许多短 ID。

所以每次自定义short都会导致id“超前太远”,有什么办法可以解决这个问题吗?在 mysql 或 php 中。

完美的是:

10=> a
37=> B
38=> foobar
39=> C
40=> FUBAR
41=> D

更新:(可能的三排方法)

“已使用”行仅在生成短 ID 而非定制时增加。这样,短 ID 始终可以使用“已使用”行生成。例如:

id  |  short  |  used
10 | a | 10
37 | B | 37
38 | foobar | 37
39 | C | 38
40 | FUBAR | 38
41 | D | 39

最佳答案

应该足够简单。

  1. 使用回收的短 ID 创建一个新表

  2. 创建另一个(序列)表,其中包含用于短 ID 生成的最后一个 ID

  3. 当短 ID 被自定义 ID 替换时,将其插入回收站

  4. 当您需要创建一个新的短 ID 时,请先查看回收站。

    一个。如果你能找到一个项目,使用它作为新的短 id(然后删除它)

    如果 bin 为空,则将序列增加 1 并从中生成一个新的短 id。

更新

这是创建和使用序列表的简单方法:

CREATE TABLE seqname (id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=MyISAM SELECT 0 AS id;

UPDATE seqname SET id=LAST_INSERT_ID(id+1);

关于php - 简短的唯一 ID 与自定义 ID 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12164219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com