我正在使用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