MariaDB创建SQL触发器遇语法错误(Error 1064)求助
问题原因及修正方案
你的触发器存在两个关键语法错误:
- 待插入数据引用方式错误:触发器里不能直接用
pc.speed访问即将插入的行数据,必须用NEW关键字(代表要插入的新行),写成NEW.speed才是正确的引用方式。 - 未指定自定义语句分隔符:MariaDB默认用分号
;作为语句结束标记,而你的触发器体内包含分号,数据库会误把END IF;的分号当成整个CREATE TRIGGER语句的结束,从而触发语法错误。需要先临时修改分隔符,比如改成$$,创建完触发器后再改回默认分号。
修正后的触发器代码
DELIMITER $$ CREATE TRIGGER `pc_before_insert` BEFORE INSERT ON `pc` FOR EACH ROW BEGIN IF NEW.speed <= 0 THEN SET NEW.speed = ABS(NEW.speed); END IF; END $$ DELIMITER ;
关键说明
DELIMITER $$:临时将语句分隔符改为$$,避免和触发器体内的分号冲突。NEW.speed:正确引用即将插入的行的speed字段值。END $$:用自定义分隔符标记触发器定义的结束。DELIMITER ;:将分隔符改回默认的分号,不影响后续SQL语句执行。
内容的提问来源于stack exchange,提问作者erozen100
相关产品推荐
相关产品推荐

