这可能是一个愚蠢的错误,但我不知道是什么原因导致了错误。我试图在每次插入之前将一个计划中的员工成本总和与项目预算进行比较。这是给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