在为WordPress MySQL数据库插入触发器之前,出现#1064和#1054错误

时间:2019-01-24 05:22:27

标签: mysql wordpress

我正在尝试为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

此外,将触发条件减少为:

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 ;

实际上确实创建了一个新触发器,但是将值插入wp_posts会导致“#1054-'字段列表'中的未知列'post_type'”错误。

罪魁祸首是什么?因为我是WordPress和MySQL的新手,所以任何帮助将不胜感激。 预先感谢!

1 个答案:

答案 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';

相关问题