一尘不染

MySQL自动增量自定义值

mysql

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

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

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

我的想法是:

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

我希望有一种优雅的方法,可以让我做到这一点,就像内置的机制那样,我只是不知道。我对存储过程/触发器不了解,因此非常感谢您的帮助。我认为最简单的方法是为字符查找表,并在到达第36行时将其重置为0,然后对第N-1行进行进位。


阅读 708

收藏
2020-05-17

共1个答案

一尘不染

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

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

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

如果要基于标识符进行查找(即,也许用户输入标识符以“跳转到”记录),则需要在该列上建立索引。

2020-05-17