当前位置: 首页 > 面试题库 >

MySQL自动增量自定义值

皇甫文乐
2023-03-14
问题内容

我正在尝试在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行进行进位。


问题答案:

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

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

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

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



 类似资料:
  • 问题内容: 我正在使用php和mysql。我有一个表,其中id列设置为自动递增作为主键。我正在尝试添加另一个名为sort_order的列。插入行后,sort_order列应自动递增。然后,用户将能够更改sort_order值。但是mysql不允许多于一列的自动递增? 自动递增sort_order值的最佳方法是什么? 受欢迎的要求,更多的解释。 在管理区域中,用户将具有类别列表。用户可以使用java

  • 问题内容: 是否可以自动增加非主密钥? 表“ book_comments” 该表上将没有其他索引。但是,我想使列自动递增,以便可以轻松创建另一个表: 表格“ book_comments_votes” 用户将只能对每个书评进行一次投票。该表通过主键强制执行此规则。 题: 是否可以自动增加非主键-例如,自动增加表“ book_comments”中的列? 替代方案,讨论: 如上所述,我想这样做是为了简化

  • 问题内容: 我刚刚使用MySQL查询浏览器创建了一个新表,并注意到在“自动增量列”下有一个勾号。这是如何运作的? 以编程方式添加到数据库时,是否仅添加一个数字,然后数据库会自动将该数字递增? 每次有新用户在我的网站上注册时,我都希望他们的客户ID(仅整数)自动递增,因此我不必尝试随机生成一个唯一的数字。 可以简单地完成吗? 谢谢! 问题答案: 以编程方式添加到数据库时,是否仅添加一个数字,然后数据

  • 问题内容: 使用Postgres,我试图用SQL自动编号主键。但是,这给了我一个错误。 错误: 知道为什么吗? 问题答案: Postgres 10或更高版本 列(请参见下文)保持不变。但是考虑一个 专栏。Postgres10实现了此标准SQL功能。 手册中的基本语法和信息。 __用列 创建 表 将 列 添加 到现有表 表可能填充也可能不填充行。 同时使它成为PK(表还不能拥有PK): 有关的: 如

  • 这就是我所拥有的 当程序运行时,会出现一个添加新类别的屏幕,用户必须写入类别的名称和描述,但ID应该是自动的,并且应该在每次用户输入新类别时增加ID。我这样做并没有达到预期效果,它只增加了一次,但由于初始值保持在5,所以它总是6。

  • 问题内容: 这是MySQL 5.3.X + db中的表: id 列从未在查询中使用,只是为了视觉方便(因此很容易看到表的增长方式)。 Memberid 是一个实际键,是唯一的,并且在查询中使用 memberid 来标识任何成员(WHERE memberid =’abcde’)。 我的问题是:如何保留auto_increment,但将memberid作为主键?那可能吗?当我尝试使用 PRIMARY