MySQL需要帮助设置触发器

时间:2016-05-03 18:24:36

标签: mysql sql if-statement triggers

我正在尝试设置TRIGGER以清除INSERT之前的空字符串。不是火箭科学,但我在语法中找不到错误!

这是TRIGGER本身

USE `ga_abtest_logging`;
DELIMITER $$
CREATE TRIGGER avoid_empty
    BEFORE INSERT ON daily_analytics
        FOR EACH ROW
        BEGIN
            IF profileID = '' 
                THEN SET profileID = NULL
            END IF;
        END$$

以下是工作台显示的内容:

DELIMITER

将鼠标悬停在END IF上,其内容为syntax error, unexpected END, expecting ';'

我的数据库设置可能有问题吗?我已经浏览了MySQL文档,我认为触发器看起来正确!有没有人看到任何明显错误的东西?

2 个答案:

答案 0 :(得分:3)

你应该做一些改变:

  • 引用列值时使用NEW.前缀
  • 在设置值
  • 的行的末尾添加分号

例如:

DELIMITER $$

CREATE TRIGGER tr_b_ins_daily_analytics BEFORE INSERT ON daily_analytics FOR EACH ROW BEGIN
  IF (NEW.profileID = '')
  THEN
    SET NEW.profileID = NULL;
  END IF;
END $$

DELIMITER ;

答案 1 :(得分:0)

以下代码应该有效。

DELIMITER $$  
CREATE TRIGGER avoid_empty  
    BEFORE INSERT ON daily_analytics  
        FOR EACH ROW  
        BEGIN  
            IF NEW.profileID = ''  
                THEN SET NEW.profileID = NULL;  
            END IF;  
        END;$$  
DELIMITER ;