MySQL 插入前触发填充省略列

MySQL before insert trigger filling omitted column

我正在尝试创建一个触发器,如果​​ 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)。

您需要用 END IF

关闭 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

您忘记关闭 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