MySQL触发器“语法错误,意外结束,应为“;”

MySQL触发器“语法错误,意外结束,应为“;”,mysql,triggers,Mysql,Triggers,我试图创建一个触发器来验证customer表中的电子邮件地址,但得到了错误 语法错误,意外结束,应为“;” 我的代码如下: CREATE TRIGGER insert_validation_email BEFORE INSERT ON customer FOR EACH ROW BEGIN IF (NEW.CustomerEmail NOT REGEXP '^[^@]+@[^@]+\.[^@]{2,}$') THEN SIGNAL

我试图创建一个触发器来验证customer表中的电子邮件地址,但得到了错误

语法错误,意外结束,应为“;”

我的代码如下:

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语句

通过更改分隔符和PUT来修复;在if块和最终结束之后。感谢戈登·林诺夫和一匹没有名字的马的帮助

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 ;

是否重新设置了分隔符?结束*?也没有,;在if块或最终结束之后。星号只是用来标识错误所在的位置,它实际上不在我的代码中。添加“;”在if块的末尾产生额外的错误和语法错误,意外的输入结尾,应为“;”通过将分隔符更改为$$进行修复,谢谢Gordon