如何使用字母和数字自动增加ID号

时间:2013-02-04 03:55:50

标签: mysql sql phpmyadmin

如何使用字母和数字自动递增ID号,例如“KP-0001”它将递增为“KP-0002”

谢谢!

5 个答案:

答案 0 :(得分:5)

这是一篇有用的文章

但基本上我鼓励你在此创建自己的算法。您可以在BEFORE INSERT触发器中添加该算法。或者你可以在前端做到这一点。

algorthm的伪代码示例

  • 获取lastID [ KP-0001 ]
  • 删除一些字符并将其放在变量[ KP - ]
  • 将剩余部分转换为数字,因为它是一个字符串[ 0001 ]
  • 增加1 [ 1 + 1 = 2 ]
  • 将其转换回字符串并在右侧[ 0002 ]
  • 上填充零
  • 连接变量和新增加的数字[ KP-0002 ]
  • 保存。

答案 1 :(得分:2)

我试图在很多方面做到这一点,但无法达到解决方案......我也使用触发器,但这也没有帮助我......

但我找到了一个快速的解决方案......

例如,您希望您的员工拥有员工代码'emp101','emp102',...等。 这也是一个自动增量...

首先创建一个包含三个字段的表,第一个字段包含您想要在开头的字母,即“emp”,第二个字段包含自动增加的数字,即101,102,...等,第三个字段包含即'emp101','emp102',......等等。

CREATE TABLE employee
(
empstr varchar( 5 ) default 'emp',
empno int( 5 ) AUTO_INCREMENT PRIMARY KEY ,
empcode varchar( 10 )
);

现在为empno提供auto_increment值。

ALTER TABLE employee AUTO_INCREMENT=101;

现在进入主题...每次插入值时,必须连接前两个字段以获取第三个字段的值

INSERT INTO employee( empcode )
VALUES ('xyz');
UPDATE employee SET empcode = concat( empstr, empno ) ;

答案 2 :(得分:1)

您无法自动增加varchar数据类型。执行此操作的其他方法是将varchar列分为两个不同的列,一个将具有整数部分,而另一个将具有类似于您的情况KP-的字母,一旦您自动递增所有整数行,只需连接这两列

答案 3 :(得分:0)

自动增量是一个整数,因此无法添加文本。

查看this问题以获取其他参考资料。

答案 4 :(得分:0)

    
CREATE TABLE Customer (
        CUSId INT NOT NULL IDENTITY(1, 1) PRIMARY KEY
        ,CUSKey AS 'Cus' + RIGHT('000' + CONVERT(VARCHAR(5), CUSId), 6) PERSISTED
        ,CusName VARCHAR(50)
        ,mobileno INT
        ,Gender VARCHAR(10)
        )