MySQL自动递增自定义值

问题描述 投票:3回答:2

我试图在一个mysql数据库中创建一个自动递增1的列,但是从0-Z开始然后滚动。

例如000,001,002,...,009,00A,00B,...,00Z,010,...,0ZZ,......,100。

我想让数据库通过自动递增字段创建列。

我的想法是:

  1. 为每个字符创建一个从0-36开始的列,然后自动递增第N行(其中N是最低有效数字)乘以1.然后在每列上添加一个触发器,当列N达到36时,将第1列添加到第N-1列。
  2. 创建一个包含36行的表,其中每行包含一个字符0-Z,并从上面用类似的进位逻辑从表中提取相应的字符
  3. 创建存储过程以从第1项执行适当的逻辑
  4. 让实际程序生成一个值并将其插入表中
  5. 有一个常规的自动递增值并计算序列中的下一个值(这是最不理想的,因为它很难由只看数据库的人解析)

我希望有一些优雅的东西,这样就像一个内置的机制来做这个,我只是不知道。我对存储过程/触发器一无所知,因此非常感谢您的帮助。我认为最简单的方法是为字符设置查找表,当到达第36行时,它将重置为0,然后有一个进位到行N-1。

mysql database database-design indexing auto-increment
2个回答
2
投票

根据您的意见,我的建议是执行以下操作:

使用常规整数auto_increment列作为行的主键,然后使用varchar类型的列或其中一个* text类型(取决于您的mysql服务器版本和数据存储要求)来存储客户的“标识符”使用。

可以使用触发器自动生成标识符。

如果您要根据标识符进行查找(即,用户输入标识符以“跳转到”记录),您将需要该列的索引。


2
投票

您可以使用存储过程生成自定义自动增量值,如下所述:

http://en.latindevelopers.com/ivancp/2012/custom-auto-increment-values/

你会得到像这样的钥匙:

SELECT * FROM custom_autonums;
+----+------------+------------+
| id | seq_1      | seq_2      |
+----+------------+------------+
|  4 | 001-000001 | DBA-000001 |
|  5 | 001-000002 | DBA-000002 |
|  6 | 001-000003 | DBA-000003 |
|  7 | 001-000676 | DBA-000004 |
|  8 | 001-000677 | DBA-000005 |
|  9 | 001-000678 | DBA-000006 |

但是你可以修改存储过程来生成你的模式:000,001,002,...,009,00A,00B,...,00Z,010,...,0ZZ,...,100

© www.soinside.com 2019 - 2024. All rights reserved.