Versuchen Sie nicht, Ihrer Spalte innerhalb der CASE WHEN-Anweisungen den Wert zuzuweisen, da Sie dies bereits tun.
CASE WHEN wird zu dem Wert ausgewertet, der die Bedingung erfüllt.
Probieren Sie diesen Code aus
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
Ich habe die Zuweisungen zu bezahlten und fälligen Spalten in der Kundenvorgangsaufstellung entfernt.