【发布时间】:2011-12-02 05:56:03
【问题描述】:
我正在使用 wordpress,需要创建一个触发器,以便在更新另一个表时更新一个表。我创建了触发器,她在理论上工作,但它只更新第一条记录并暂停其执行。用于存储选择返回的变量将是用逗号分隔的 id 之一。
等式:选择返回类似:424,532,123,212
并通过输入“in”在更新中使用它。
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 连接语法,这是一种反模式,请改用显式连接语法。
-
您检查过 @ids..返回的值吗?
标签: mysql wordpress triggers phpmyadmin