创建MySQL触发器遇1064语法错误,请求协助排查问题
解决MySQL触发器创建的#1064语法错误问题
这个报错的核心原因是MySQL默认的语句分隔符(分号;)和触发器体内的分号冲突了。MySQL会把触发器体里的第一个分号当成整个CREATE TRIGGER语句的结束标记,导致后续语法解析直接失败。
下面是修正后的完整代码:
DELIMITER // CREATE TRIGGER transactions_insert AFTER INSERT ON transactions FOR EACH ROW BEGIN UPDATE users SET users.total_money = users.total_money + NEW.Price WHERE users.User_ID = NEW.User_id; END // DELIMITER ;
关键修改点说明:
- 开头用
DELIMITER //把语句分隔符临时改成//,这样MySQL就不会把触发器体内的;当成整个语句的结束信号。 - 触发器定义全部写完后,用
//来标记整个CREATE TRIGGER语句的结束。 - 最后用
DELIMITER ;把分隔符改回默认的分号,避免影响后续的SQL语句执行。
另外还有两个需要注意的细节:
- 要确保
transactions表中的Price、User_id字段名,和users表的User_ID字段名,和实际表结构完全一致(如果你的MySQL环境开启了大小写敏感,字段名大小写要严格匹配)。 - 确保
users.User_ID和transactions.User_id的字段类型一致,否则可能出现数据匹配异常。
内容的提问来源于stack exchange,提问作者mslowiak
相关产品推荐
相关产品推荐

