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

j2cgzkjk  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(321)

表中有id、name、employee\u id等字段。id列是具有自动递增功能的主键。在这个表中,
我需要一个叫 employee_id 从…开始 A5001, A5002, A5003...and soon .
我试过下面的代码。
table

CREATE TABLE table1_seq
(
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);
CREATE TABLE table1
(
 id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(30),
  employee_id VARCHAR(30) NOT NULL DEFAULT '0'
);

现在扳机

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之后,它从1000开始,这是完全错误的,我需要继续这样做 A6000, A6001, A6002.. and so on 我想我的扳机有点问题。
你能帮我解决这个问题吗?

x8goxv8g

x8goxv8g1#

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

SET NEW.employee_id = CONCAT('V', 5000 + LAST_INSERT_ID());

说明:我只是在最后一个insert id上加了5000。想想看:
第一个id为5000+1=5001
第9999个id是5000+999=5999
第1000个id为5000+1000=6000
它永远不会抛出一个短于4位数字的id,因此不需要 LPAD .
警告:第4999次插入后,您必须思考您想要什么。它将导致一个5位数的id(5000+5000=10000)。如果你对5位数没有问题,就这样吧。

相关问题