如何在mysql中使用触发器根据产品名称增加产品id
产品详细信息表:(字段)产品id(主键)、产品名称、前缀和Slno(自动递增) 我需要根据产品名称字段和前缀字段增加产品Id(前缀输入将由用户提供)。我已经有了concat前缀和id。但是我无法实现下面显示的顺序如何在mysql中使用触发器根据产品名称增加产品id,mysql,triggers,innodb,auto-increment,composite-key,Mysql,Triggers,Innodb,Auto Increment,Composite Key,产品详细信息表:(字段)产品id(主键)、产品名称、前缀和Slno(自动递增) 我需要根据产品名称字段和前缀字段增加产品Id(前缀输入将由用户提供)。我已经有了concat前缀和id。但是我无法实现下面显示的顺序 Product Name Prefix Prod_id BOOK BO BO_001 FLOWER FLOW FLOW_001 BOOK
Product Name Prefix Prod_id
BOOK BO BO_001
FLOWER FLOW FLOW_001
BOOK BO BO_002
DESK DE DE_001
DESK DE DE_002
FLOWER FLOW FLOW_002
到目前为止,我已经实现了一个触发器
DELIMITER $$
CREATE TRIGGER tg_customer_details_INSERT
BEFORE INSERT ON customer_details
FOR EACH ROW
BEGIN
INSERT INTO product_details_seq VALUES (NULL);
SET NEW.Slno = coalesce((select max(Slno) from product_details), 0) + 1;
SET NEW.Prod_id = CONCAT((NEW.Prefix), LPAD(LAST_INSERT_ID(), 3, '0'));
END$$
DELIMITER;
但在这段代码中,我得到了像book_001、flower_002、book_003、desk_004、flower_005……这样的输出。。我需要一个单独的序列为每个产品名称。由于这是一个优先事项,请提供帮助。所有的国王都能回答
谢谢,
Acube.最终创建了增量序列,需要连接前缀和产品id。无法做到这一点,需要您在这方面提供帮助…
BEGIN
select count(*) into @Product_Name from product_details where Product_Name = NEW.Product_Name;
select Prod_id + 1 into @Prod_id from product_details where Product_Name = NEW.Product_Name order by Prod_Id desc limit 1;
if @Product_Name > 0 then
set NEW.Prod_id = @Prod_id;
else
set NEW.Prod_id = 1;
end if;
SET NEW.Slno = coalesce((select max(Slno) from product_details), 0) + 1;
end
堆栈溢出中的任何主体都无法解决此问题,请帮助我编写代码。谢谢你。