Триггер mySql в phpMyAdmin на проверку одинаковых знаний

Рейтинг: 0Ответов: 0Опубликовано: 22.08.2023

Есть две таблицы: основная таблица (products) и таблица с историей изменений основной таблицы (change_history).

  1. Основная таблица имеет следующие столбцы: | Id | Name | Place | Price |

  2. и таблица с историей изменений основной таблицы: | Id | product_id | product_name | product_place | product_price | date |

Необходимо, чтобы при добавлении нового продукта или изменении уже существующего, строчка с изменённым продуктом добавлялась в таблицу с историей изменений. Для этого я сделал триггер. Но проблема в том, что в основном меняется только цена продукта, а остальные поля меняются редко и из-за этого в таблицу с историей добавляется много повторяющихся значений названия продукта, которое меняется редко. Я подумал о том, чтобы модифицировать триггер и перед тем, как добавлять новую строчку в таблицу с историей проверять существуют ли значения из этой строчки в соответствующих столбцах и если да, то обнулять их. Я написал триггер, но почему то он не работает:

TRIGGER `new_change` AFTER UPDATE ON `products`

BEGIN

IF NOT EXISTS (SELECT product_name FROM change_history WHERE product_name = NEW.name) THEN
    BEGIN
    INSERT INTO change_history(product_name,) VALUES (NEW.name);
    END;
END IF;
IF NOT EXISTS (SELECT product_place,  FROM change_history WHERE product_place,  = NEW.place) THEN
    BEGIN
    INSERT INTO change_history(product_place) VALUES (NEW.place);
    END;
END IF;
IF NOT EXISTS (SELECT product_price,  FROM change_history WHERE product_price,  = NEW.price) THEN
    BEGIN
    INSERT INTO change_history(product_price) VALUES (NEW.price);
    END;
END IF;

END

Подскажите, в чем может быть проблема и как может быть лучше реализовать данный функционал?

Ответы

Ответов пока нет.