Mysql 添加1000条记录后前缀显示错误的自动增量

Mysql 添加1000条记录后前缀显示错误的自动增量,mysql,auto-increment,Mysql,Auto Increment,我在表中有id、name、employee_id等字段。id列是自动递增的主键。在此表中 我需要一个名为employee\u id的列,从A5001、A5002、A5003…开始,很快就会开始 我尝试了下面的代码 桌子 现在扳机 DELIMITER $$ CREATE TRIGGER tg_table1_insert BEFORE INSERT ON table1 FOR EACH ROW BEGIN INSERT INTO table1_seq VALUES (NULL); SET N

我在表中有id、name、employee_id等字段。id列是自动递增的主键。在此表中

我需要一个名为
employee\u id
的列,从
A5001、A5002、A5003…开始,很快就会开始

我尝试了下面的代码

桌子

现在扳机

DELIMITER $$
CREATE TRIGGER tg_table1_insert
BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
  INSERT INTO table1_seq VALUES (NULL);
  SET NEW.employee_id = CONCAT('A', LPAD(LAST_INSERT_ID(), 4, '500'));
END$$
DELIMITER ;
然后在表1中插入行

INSERT INTO Table1 (name) 
VALUES ('ABC'),('ZXD'),('POI');
最后,我得到了我的输出

1|ABC | A5001
2|ZXD | A5002
3|POI | A5003
等等

现在我的问题是,我在表中插入了1000行,所以我的id是1000,但我的员工id有一些问题,因为在获得A5999后,它从A1000开始,这是完全错误的,我需要像
A6000,A6001,A6002一样连续。。等等

我想我的扳机有点问题


你能帮我一下吗?

你可以用数学加法代替字符串填充:

SET NEW.employee_id = CONCAT('V', 5000 + LAST_INSERT_ID());
说明: 我只是在最后一个插入ID上加了5000。想想看:
第一个ID为5000+1=5001
第999ID将是5000+999=5999
第1000个ID为5000+1000=6000

它不会抛出小于4位的ID,因此不需要
LPAD


警告:您必须考虑在第4999次插入后想要什么。它将导致一个5位数的ID(5000+5000=10000)。如果5位数字没有问题,请保持这种方式。

这其中有什么令人惊讶的地方?您告诉它用字符串
'500'
左填充ID,这就是它所做的。
'500'
是一个固定字符串,永远不会更改。如果你想在5999之后继续,你需要将ID添加到像5000这样的数字中。哦!我不知道@RacilHilan,谢谢你提供的信息。还有其他解决这个问题的方法吗?想想看,1000已经有4个字符了,所以左填充将不会有任何效果,它将保持
'1000'
。如果你加1000+5000=6000。还有其他方法可以解决这个问题,但是加法有什么问题呢?你为什么需要另一种方式?你从达米安那里得到的答案是很好的。达米安,你的答案很好,但是考虑增加一个简短的解释,以便对未来的读者更有用。你可以从我上面的评论中复制并修改它,或者写你自己的。@Damain,是的,谢谢你,它工作正常,非常完美,希望我不会有任何问题this@RacilHilan,是的,你是对的,很难理解它为什么起作用。我只是复制并粘贴它。你为什么删除LPAD?你是对的,对不起。我觉得很清楚。我编辑了答案。@Damiánpabologonzález,是的,我没有问题。我需要一个数字。在未来,它将超过10000或20000条记录。它将增加5位数。我希望您的代码中不会出现任何问题。
SET NEW.employee_id = CONCAT('V', 5000 + LAST_INSERT_ID());