我一直收到这个错误: “无法在存储的函数/触发器中更新表'wp_posts',因为它已被调用此存储函数/触发器的语句使用”
当Woocommerce将记录插入WP_posts
表时,我希望触发器确定插入的新记录是否有post_title (column) = 'scheduled_subscription_end_of_prepaid_term' (field data)
。如果是,我希望触发器从ID
(新插入行中的列/数据)中提取new.post_content
。
提取ID后,我想更新ID。 ID与新插入行的ID不同。
有人可以告诉我我做错了什么吗?
delimiter //
create TRIGGER DB.Cancel
before INSERT ON DB.wp_posts FOR EACH ROW
BEGIN
DECLARE updateid bigint;
Declare variable longtext;
declare variable2 longtext;
IF NEW.post_title = 'scheduled_subscription_end_of_prepaid_term' then
set updateid := NEW.id;
set variable := RIGHT(new.post_content, LOCATE(":", new.post_content));
set variable2 := LEFT(variable, LOCATE("2052", variable)-2);
update db.wp_posts
set post_status="wc-cancelled"
where id=variable2 and post_status='wc-processing';
end if;
END//
答案 0 :(得分:3)
如果您在完全插入之前尝试更改要插入的行,则只需设置NEW值,而不是运行UPDATE。
如果您尝试更新触发器所在的同一个表中的一个或多个不同的行,则不允许这样做。