У меня есть веб-сайт WordPress и плагин, с помощью которого я могу импортировать товары. Когда продукт импортируется, к нему прикрепляются метатеги, как показано ниже (47226 - это товар, а 47227 - это изменение 47226): ![enter image description here](https://i.stack.imgur.com/rHr9V.png)
Когда новый товар импортируемый через плагин, он автоматически вставляет все эти метаданные в таблицу с именем wp_postmeta. Поскольку у каждого продукта всегда есть «_price», а варианты имеют как «_price», так и «_regular_price», я пытаюсь извлечь только строки «_price» и «_regular_price» с соответствующими значениями для post_id, meta_key и meta_value и сохранить эти значения в новую таблицу под названием original_price с триггером. Плагин также вставляет обновления цены в wp_postmeta для существующих продуктов в таблице original_price, поэтому я хочу исключить их и вставлять только те элементы, которые еще не существуют в таблице original_prices. Пока мой триггер:
DELIMITER //
CREATE TRIGGER `new_import_INSERT` AFTER INSERT ON `wp_postmeta`
FOR EACH ROW BEGIN
INSERT INTO original_prices (date_added,post_id,meta_key,meta_starting_price)
SELECT now(),post_id,meta_key,meta_value FROM wp_postmeta
WHERE post_id=NEW.post_id AND NEW.meta_key IN ('_price','_regular_price') AND NOT EXISTS (SELECT * FROM original_prices WHERE post_id=new.post_id);
END//
DELIMITER ;
Это работает, но для каждого _price и _regular_price он дублирует результаты 18 раз. Я попытался изменить FROM wp_postmeta
на FROM inserted
, но это делает его таким, чтобы никакие записи не добавлялись в original_prices, когда новый продукт импортируется через плагин. Я также попытался изменить SELECT now(),post_id,meta_key,meta_value
на SELECT now(),NEW.post_id,NEW.meta_key,NEW.meta_value
, но это также не решило проблему дублирования. Где я ошибаюсь, чтобы дублировать результаты столько раз?