我正在尝试为WordPress MySQL数据库创建一个触发器,该触发器在插入语句发生7天后将post_status更改为“继承”。但是,执行以下代码:
DELIMITER $$
CREATE
TRIGGER `changeStatus` BEFORE INSERT
ON `wp_posts`
FOR EACH ROW BEGIN
IF post_type='product' THEN
set NEW.post_status = 'inherited'
WHERE OLD.post_date < DATE_SUB(NOW(), INTERVAL 7 DAY);
END IF;
END$$
DELIMITER ;
导致“#1064-您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以获取在'WHERE OLD.post_date 此外,将触发条件减少为: 实际上确实创建了一个新触发器,但是将值插入wp_posts会导致“#1054-'字段列表'中的未知列'post_type'”错误。 罪魁祸首是什么?因为我是WordPress和MySQL的新手,所以任何帮助将不胜感激。
预先感谢!DELIMITER $$
CREATE
TRIGGER `changeStatus` BEFORE INSERT
ON `wp_posts`
FOR EACH ROW BEGIN
IF post_type='product' THEN
set NEW.post_status = 'inherited';
END IF;
END$$
DELIMITER ;
答案 0 :(得分:0)
在插入之前,OLD值必须为old.post_type
DELIMITER $$
CREATE
TRIGGER `changeStatus` BEFORE INSERT
ON `wp_posts`
FOR EACH ROW BEGIN
IF old.post_type='product' THEN
set NEW.post_status = 'inherited';
END IF;
END$$
DELIMITER ;
此代码表示:
IF old.post_type='product' THEN
set NEW.post_status = 'inherited';
如果为true(post_type='product'
),然后为NEW.post_status = 'inherited';