我们在WordPress系统上遇到了created_at的问题。不知何故,一些用户将该字段“随机”更新为无效值,因此将其设置为“00000000”日期时间。我们还没有找到WP代码的原因,我们现在正在分析项目的几个插件。它有一个庞大的代码和用户群,所以我们认为使用MySQL触发器捕获这种“随机”更新可能会更快。
事情是,我们不知何故继续发出语法错误或触发代码,并且像我们一样蹩脚的SQLer,我们需要帮助试图找出它可能是什么。
我们要完成的是:
我们决定检查每一行,以防万一有奇怪的行为发生。
DELIMITER $$
CREATE TRIGGER `user_register_updated` BEFORE UPDATE ON `wp_t8y31tcd9u_users`
FOR EACH ROW
BEGIN
IF OLD.created_at != NEW.created_at
INSERT INTO user_registration_change_records (user_id, created_at) VALUES (OLD.ID, OLD.created_at)
END IF;
END;$$
DELIMITER ;
提前感谢任何建议!
语法错误
#1064 - 您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在'INSERT INTO user_registration_change_records(user_id,created_at)VALUES(OLD.I'第6行)附近使用正确的语法
答案 0 :(得分:1)
您有几个语法错误:
then
之前缺少insert
关键字(这是与错误消息相关的关键字);
在;
之后end
至少这些是我能看到的。
DELIMITER $$
CREATE TRIGGER `user_register_updated` BEFORE UPDATE ON `wp_t8y31tcd9u_users`
FOR EACH ROW
BEGIN
IF OLD.created_at != NEW.created_at THEN
INSERT INTO user_registration_change_records (user_id, created_at) VALUES (OLD.ID, OLD.created_at);
END IF;
END$$
DELIMITER ;
使用compound statement syntax上的mysql手册是值得的,因为所有这些都可以在那里找到。