我在wordpress数据库表wp_options上创建了一个触发器,但每次都会出现语法错误。
#1064
- 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法 靠近''在第6行
这是我的触发器:
CREATE TRIGGER WpafDbDefaultTableRenameTrigger
BEFORE UPDATE
ON wp_options
FOR EACH ROW BEGIN
IF NEW.option_name = "wpaf_db_table_name" AND NEW.option_value != OLD.option_value THEN
SET NEW.option_value = CONCAT("wp_",NEW.option_value);
RENAME TABLE OLD.option_value TO NEW.option_value;
END IF;
END;
我尝试了here给出的解决方案。使用此解决方案后,我的触发器是
DELIMITER $$
CREATE TRIGGER WpafDbDefaultTableRenameTrigger
BEFORE UPDATE
ON wp_options
FOR EACH ROW BEGIN
IF NEW.option_name = "wpaf_db_table_name" AND NEW.option_value != OLD.option_value THEN
SET NEW.option_value = CONCAT("wp_",NEW.option_value)$$
RENAME TABLE OLD.option_value TO NEW.option_value$$
END IF$$
END$$
DELIMITER ;
但又得到了同样的错误。
答案 0 :(得分:0)
触发器有几个问题:
DELIMITER $$
CREATE TRIGGER WpafDbDefaultTableRenameTrigger
BEFORE UPDATE ON wp_options
FOR EACH ROW
BEGIN
IF NEW.option_name = "wpaf_db_table_name" AND
NEW.option_value != OLD.option_value
THEN
/*
SET NEW.option_value = CONCAT("wp_",NEW.option_value)$$
RENAME TABLE OLD.option_value TO NEW.option_value$$
END IF$$
*/
SET NEW.option_value = CONCAT("wp_",NEW.option_value);
RENAME TABLE OLD.option_value TO NEW.option_value;
END IF;
END$$
DELIMITER ;
存储函数或不允许显式或隐式提交 触发。请参阅13.3.3 Statements That Cause an Implicit Commit。