Триггер mySql в phpMyAdmin на проверку одинаковых знаний
Есть две таблицы: основная таблица (products) и таблица с историей изменений основной таблицы (change_history).
Основная таблица имеет следующие столбцы: | Id | Name | Place | Price |
и таблица с историей изменений основной таблицы: | 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
Подскажите, в чем может быть проблема и как может быть лучше реализовать данный функционал?