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

SQLite触发器编写报错:无法定位FROM语句附近的语法错误

SQLite触发器语法错误排查及修复方案

现有代码错误点汇总

  • 语法错误1:WHERE子句不支持直接使用SUM()聚合函数,也不允许出现SUM(cost) FROM Employee这种非法判断结构,聚合计算必须放在SELECT子句中
  • 语法错误2:表名拼写错误,关联Employee表时误用了不存在的PlanEmployee表,实际表名为PlanEmployees
  • 语法错误3:表别名不匹配,Project表声明了别名pro,后续引用却用了未声明的project.budget
  • 逻辑错误:未使用触发器内置的NEW关键字关联即将插入的新行,原有逻辑是全表范围判断,完全不符合「单个计划成本校验」的需求

修复后可用代码

CREATE TRIGGER trg_ins_PlanEmployees BEFORE INSERT ON PlanEmployees
BEGIN
    SELECT CASE
        WHEN (
            -- 统计当前计划已绑定的所有员工成本总和
            SELECT IFNULL(SUM(e.cost), 0)
            FROM PlanEmployees pe
            INNER JOIN Employee e ON pe.eID = e.eID
            WHERE pe.pID = NEW.pID
        ) + (
            -- 取本次新增员工的成本
            SELECT cost FROM Employee WHERE eID = NEW.eID
        ) > (
            -- 取当前计划关联的项目预算
            SELECT pro.budget
            FROM Project pro
            INNER JOIN Plan pl ON pro.projectID = pl.projectID
            WHERE pl.pID = NEW.pID
        )
        THEN RAISE(ABORT, 'Over budget')
    END;
END;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:54:07