我正在尝试制作一个触发器,如果未在插入查询中显式设置列B,则会使用列A中的值填充B列。 (列B设置为允许NULL并默认为NULL值)
DELIMITER $$
CREATE TRIGGER trigger_name BEFORE INSERT ON my_table FOR EACH ROW
BEGIN
IF (NEW.valueB IS NULL) THEN SET NEW.valueB = NEW.valueA ;
END
$$
但是我收到了这个错误(不是很有用)。
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4
当我试图找到这个有问题的空字符串时,''使查询像每行一个单词,mysql用' ='标记行。角色有问题。
我仔细检查了查询是否有任何非ascii字符。
我通过命令行使用mysql版本5.5.37-0ubuntu0.12.10.1
(例如,不是phpmyadmin)。
答案 0 :(得分:1)
您需要使用IF
END IF
DELIMITER $$
CREATE TRIGGER trigger_name BEFORE INSERT ON my_table
FOR EACH ROW
BEGIN
IF NEW.valueB IS NULL THEN
SET NEW.valueB = NEW.valueA ;
END IF ;
END;$$
delimiter ;
查看此处的示例http://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html
答案 1 :(得分:0)
您忘了关闭IF语句。阅读语法here。我认为下面的代码对您有用。
DELIMITER $$
CREATE TRIGGER trigger_name BEFORE INSERT ON my_table
FOR EACH ROW
BEGIN
IF (NEW.valueB IS NULL) THEN
SET NEW.valueB = NEW.valueA ;
END IF
END $$
DELIMITER