nezkoušejte přiřadit hodnotu vašemu sloupci uvnitř příkazů CASE WHEN, protože to již děláte.
CASE WHEN se vyhodnotí na hodnotu, která splňuje podmínku.
zkuste tento kód
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
Odstranil jsem přiřazení k placeným a splatným sloupcům uvnitř výpisu případu.