【发布时间】:2020-02-14 20:36:41
【问题描述】:
我有一个 wordpress 网站和一个插件,可以用来导入产品。导入产品时,会附加元标记,如下所示(47226 是产品,47227 是 47226 的变体):
当通过插件导入新项目时,它会自动将所有这些元数据插入名为 wp_postmeta 的表中。
由于每个产品总是有 '_price' ,而变体同时有 '_price' 和 '_regular_price',我试图只提取 '_price' 和 '_regular_price' 行,并分别使用 post_id、meta_key 和 meta_value 的值,并将这些值保存到带有触发器的名为 original_price 的新表中。
该插件还为 original_price 表中的现有产品插入价格更新到 wp_postmeta,所以我想排除它们,只插入 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 ,但这使得通过 plguin 导入新产品时不会向 original_prices 添加任何条目。我还尝试将SELECT now(),post_id,meta_key,meta_value 更改为SELECT now(),NEW.post_id,NEW.meta_key,NEW.meta_value,但这也没有解决重复问题。
重复结果这么多次,我哪里错了?
【问题讨论】: