我正在尝试创建触发器来验证客户表中的电子邮件地址,但收到错误
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/