försök inte tilldela värdet till din kolumn i CASE WHEN-satserna eftersom du redan gör det.
CASE WHEN kommer att utvärderas till det värde som uppfyller villkoret.
prova den här koden
UPDATE payments SET
total = :total,
paid = (CASE WHEN paid > :new THEN :new ELSE paid END),
due = (CASE WHEN paid < :new THEN (:new - paid) ELSE due END)
WHERE id = :id
Jag tog bort tilldelningarna till betalda och förfallna kolumner i ärendeutdraget.