MySQL自动递增自定义值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL自动递增自定义值相关的知识,希望对你有一定的参考价值。
我试图在一个mysql数据库中创建一个自动递增1的列,但是从0-Z开始然后滚动。
例如000,001,002,...,009,00A,00B,...,00Z,010,...,0ZZ,......,100。
我想让数据库通过自动递增字段创建列。
我的想法是:
- 为每个字符创建一个从0-36开始的列,然后自动递增第N行(其中N是最低有效数字)乘以1.然后在每列上添加一个触发器,当列N达到36时,将第1列添加到第N-1列。
- 创建一个包含36行的表,其中每行包含一个字符0-Z,并从上面用类似的进位逻辑从表中提取相应的字符
- 创建存储过程以从第1项执行适当的逻辑
- 让实际程序生成一个值并将其插入表中
- 有一个常规的自动递增值并计算序列中的下一个值(这是最不理想的,因为它很难由只看数据库的人解析)
我希望有一些优雅的东西,这样就像一个内置的机制来做这个,我只是不知道。我对存储过程/触发器一无所知,因此非常感谢您的帮助。我认为最简单的方法是为字符设置查找表,当到达第36行时,它将重置为0,然后有一个进位到行N-1。
答案
根据您的意见,我的建议是执行以下操作:
使用常规整数auto_increment列作为行的主键,然后使用varchar类型的列或其中一个* text类型(取决于您的mysql服务器版本和数据存储要求)来存储客户的“标识符”使用。
可以使用触发器自动生成标识符。
如果您要根据标识符进行查找(即,用户输入标识符以“跳转到”记录),您将需要该列的索引。
另一答案
您可以使用存储过程生成自定义自动增量值,如下所述:
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
以上是关于MySQL自动递增自定义值的主要内容,如果未能解决你的问题,请参考以下文章