【发布时间】:2023-03-30 09:45:01
【问题描述】:
我正在尝试在 mysql 数据库中创建一个自动递增一但从 0-Z 开始然后滚动的列。
例如 000, 001, 002, ..., 009, 00A, 00B, ..., 00Z, 010, ..., 0ZZ, ..., 100.
我想让数据库通过自动递增字段创建列。
我的想法是:
- 为从 0 到 36 的每个字符创建一列,然后将第 N 行(其中 N 是最低有效位)自动增加 1。然后在每列上添加一个触发器,以在列 N-1 列添加 1 N 达到 36。
- 创建一个包含 36 行的表,其中每行包含一个字符 0-Z,并使用与上述类似的进位逻辑从表中提取适当的字符
- 创建一个存储过程来执行第 1 项中的相应逻辑
- 让实际程序生成一个值并将其插入到表中
- 有一个常规的自动递增值并计算序列中的下一个值(这是最不理想的,因为它很难被仅查看数据库的人解析)
我希望有一些优雅的东西可以像内置机制一样允许这样做,我只是不知道。我对存储过程/触发器一无所知,因此将不胜感激。我认为最简单的方法是为字符创建一个查找表,当到达第 36 行时,它被重置为 0,然后有一个进位到第 N-1 行。
【问题讨论】:
-
您是否也打算将此列用作您的主键?
-
我愿意,但这不是绝对必要的
-
好的,那么您能解释一下字母数字 ID 背后的原因 - 为什么带有 auto_incremenet 的常规整数字段不够用?
-
是接收最终数据产品的人使用的标识符
标签: mysql database database-design indexing auto-increment