无法在触发器中的 FROM 语句附近找出此错误



这可能是一个愚蠢的错误,但我不知道是什么原因导致了错误。我试图在每次插入之前将一个计划中的员工成本总和与项目预算进行比较。这是给sqlite的,感谢您提前提供任何答案。

%%sql
CREATE TRIGGER trg_ins_PlanEmployees BEFORE INSERT ON PlanEmployees
BEGIN 
SELECT
CASE
WHEN NOT EXISTS (
SELECT 1
FROM Project pro
INNER JOIN Plan ON pro.projectID = Plan.projectID
INNER JOIN PlanEmployees ON Plan.pID = PlanEmployees.pID
INNER JOIN Employee ON PlanEmployee.eID = Employee.eID
WHERE SUM(cost) FROM Employee <= project.budget
)
THEN RAISE (ABORT, 'Over budget')
END;
END;

的查询

SELECT 1
FROM Project pro
INNER JOIN Plan ON pro.projectID = Plan.projectID
INNER JOIN PlanEmployees ON Plan.pID = PlanEmployees.pID
INNER JOIN Employee ON PlanEmployee.eID = Employee.eID
WHERE SUM(cost) FROM Employee <= project.budget

由于而语法不正确

WHERE SUM(cost) FROM Employee <= project.budget

部分,因为SUM是一个聚合函数,其计算结果不为布尔值,并且其本身不正确,无法形成where子句,并且FROM不能定义两次,也不能在WHERE之后定义。

可能的解决方案:

SELECT 1
FROM Project pro
INNER JOIN Plan ON pro.projectID = Plan.projectID
INNER JOIN PlanEmployees ON Plan.pID = PlanEmployees.pID
INNER JOIN Employee ON PlanEmployee.eID = Employee.eID
WHERE SUM(cost) <= project.budget

最新更新