You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 ;

关键说明

  1. DELIMITER $$:临时将语句分隔符改为$$,避免和触发器体内的分号冲突。
  2. NEW.speed:正确引用即将插入的行的speed字段值。
  3. END $$:用自定义分隔符标记触发器定义的结束。
  4. DELIMITER ;:将分隔符改回默认的分号,不影响后续SQL语句执行。

内容的提问来源于stack exchange,提问作者erozen100

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:45:37