這可能是一個愚蠢的錯誤,但我無法弄清楚導致錯誤的原因。我試圖在每次插入之前將一個計劃中的員工成本總和與專案預算進行比較。這是針對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;
uj5u.com熱心網友回復:
的查詢
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363140.html
