MySQL创建BEFORE INSERT触发器时出现Syntax error语法错误如何解决
报错原因
该报错的核心原因是MySQL语句分隔符冲突:MySQL默认的语句结束标记为;,而你编写的触发器代码内部的SET、END IF等语句都使用了;作为结尾,解析器遇到第一个;时就会判定整个CREATE TRIGGER语句已经执行结束,后续剩余的代码就会被识别为非法语法,触发你收到的报错。
解决方法
你只需要在创建触发器前临时修改语句分隔符,待触发器创建完成后再改回默认分隔符即可,完整执行代码如下:
-- 临时修改语句分隔符为// DELIMITER // CREATE TRIGGER age_trigger BEFORE INSERT ON kids FOR EACH ROW BEGIN IF (NEW.age < 0) THEN SET NEW.age = NEW.age * -1; END IF; END // -- 将分隔符改回默认的; DELIMITER ;
修改后MySQL会将两个DELIMITER之间的所有代码识别为一条完整的触发器创建语句,等到遇到自定义的//才会结束解析,不会再和内部的;产生冲突。
内容的提问来源于stack exchange,提问作者webdesignnoob
相关产品推荐
相关产品推荐

