MySQL 触发器 "syntax error, unexpected END, expecting ' ;'"

标签 mysql triggers

我正在尝试创建触发器来验证客户表中的电子邮件地址,但收到错误

syntax error, unexpected END, expecting ';'

我的代码如下:

CREATE TRIGGER insert_validation_email
 BEFORE INSERT ON customer FOR EACH ROW
    BEGIN
        IF (NEW.CustomerEmail NOT REGEXP '^[^@]+@[^@]+\.[^@]{2,}$')
        THEN
            SIGNAL SQLSTATE '45000'
            SET MESSAGE_TEXT = 'Cannot add or update row: invalid email address'
    END* IF
END

END* 是带有错误下划线的位置(星号不存在)

还会包含其他验证触发器,因此需要 begin 和 end 语句

最佳答案

通过更改分隔符并放置来修复;在 if block 和最终 END 之后。感谢 Gordon Linoff 和 a_horse_with_no_name 的帮助

DELIMITER $$
CREATE TRIGGER before_insert_email
     BEFORE INSERT ON customer FOR EACH ROW
        BEGIN
            IF (NEW.CustomerEmail NOT REGEXP '^[^@]+@[^@]+\.[^@]{2,}$')
            THEN
                SIGNAL SQLSTATE '45000'
                SET MESSAGE_TEXT = 'Cannot add or update row: invalid email address';
        END IF;
    END$$
DELIMITER ;

关于MySQL 触发器 "syntax error, unexpected END, expecting ' ;'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28215879/

相关文章:

Mysql Windows路径更新

javascript - Jquery:需要逻辑方面的帮助。不同的 div,每个都有自己的触发器。一次只能打开一个,其他都关闭

triggers - 触发 "mobileinit"事件

asp.net - 按返回键触发更新面板

mysql - 如何仅针对以 "Table_"开头的表创建在更新后触发的触发器

MySQL 更新触发器准备好的语句解决方法?

mysql - 具有两个表和多个数据和价格范围的复杂查询

php - MySQL 查找下一个 id(下一张图片)

mysql - 如何使用groupby对mysql进行排名

mysql - 总重复数