Как увеличить Prod_id на основе Product_Name с помощью триггера в mysql

Таблица Product_Details: (Поля) Prod_id (первичный ключ), Product_Name, префикс и Slno (автоматически увеличивается)

мне нужно увеличить Prod_Id на основе поля название продукта и поля префикса (ввод префикса будет предоставлен пользователем). у меня уже есть префикс и идентификатор concat. но я не могу добиться последовательности, как показано ниже

    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.... и так далее... мне нужна отдельная последовательность для каждого названия продукта. Так как это приоритетный вопрос, пожалуйста, помогите. Все короли Db могут ответить.

Спасибо, Акубе.


person acube    schedule 17.03.2014    source источник
comment
Ни одно тело в переполнении стека не имеет решения этой проблемы, пожалуйста, помогите мне с кодом. спасибо Акубе.   -  person acube    schedule 18.03.2014


Ответы (1)


Наконец-то создана последовательность приращений, и необходимо объединить префикс и идентификатор продукта. Не могу этого сделать, нужна ваша помощь в этом отношении...

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
person acube    schedule 18.03.2014