我需要生成唯一的“ids”,问题是,它只能在 1 - 99999 之间。
“好”的是,它仅在与另一列组合时必须是唯一的。
我们有组,每个组都有自己的“group_id”,每个组都需要类似 unique('group_id', 'increment_id')
现在 99999 条记录对于每个组来说足够使用几年,但对于所有组来说还不够,因此我不能只使用 AUTO_INCRMENT 创建表并插入其中记录并获取其自动增量。
例如,如果我需要第一组 5 条记录和第二组 3 条记录,我想得到如下结果:
group_id, increment_id
1, 1,
1, 2,
1, 3,
1, 4,
1, 5,
2, 1
2, 2,
2, 3
此外,冲突不是一个选项,因此,如果以编程方式完成,使用“长度”之类的东西可能会很棘手(即一次可能有 10 个请求,每个请求首先选择给定 group_id 的长度,然后尝试创建10 行具有相同的increment_id)
但是我在想 - 如果我将其设置为 count 的子选择的值,那么它总是“ok”?
最佳答案
您可以创建一个名为 counters 的辅助表来管理它:
表:计数器 列:group_id、current_counter
或
每次插入行increment_id = select max(increment_id)+1 from table_xxx where group_id = group_xxxx
关于针对特定情况的 MySQL 计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42399816/