我正在使用wordpress,并且需要创建一个触发器,在另一个更新时更新表。我创建了触发器,她在理论上工作,但它只更新第一条记录并暂停执行。用于存储返回的select的变量将是以逗号分隔的id之一。MySQL触发器不能很好地工作
式:该选择回报是这样的:424532123212
而且通过把“中”的更新中使用它。
UPDATE wp_posts SET e.post_modified = date (NEW.modified_date) e.ID WHERE IN (@ids);
正如我说在这种情况下,仅更新的第一个记录是424
我希望有人能帮助我。
这里是触发:
CREATE TRIGGER triggerupdatedata AFTER UPDATE ON wp_ngg_gallery
FOR EACH ROW BEGIN
set @ids := (SELECT
GROUP_CONCAT(a.ID SEPARATOR ',')
FROM
wp_posts a, wp_postmeta b, wp_ngg_gallery c
WHERE
c.gid = OLD.gid
AND
a.ID = b.post_id
AND
b.meta_key = 'galeria_id'
AND
c.gid = (SELECT d.meta_value FROM wp_postmeta d WHERE d.post_id = a.ID AND d.meta_key = 'galeria_id')
);
UPDATE wp_posts e SET e.post_modified = date(NEW.modified_date) WHERE e.ID IN (@ids);
END;//
不要使用隐式SQL '89连接语法它是反模式,而是使用显式连接语法。 – Johan
您是否检查了** @ids **返回的值? – Chandresh