MySQL触发器“语法错误,意外结束,应为“;”
我试图创建一个触发器来验证customer表中的电子邮件地址,但得到了错误 语法错误,意外结束,应为“;” 我的代码如下: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
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