Bent u niet vergeten een "ELSE" in de casusverklaring in te vullen?
UPDATE my_table
SET field = CASE
WHEN id IN (/* true ids */) THEN TRUE
WHEN id IN (/* false ids */) THEN FALSE
ELSE field=field
END
Zonder de ELSE neem ik aan dat de evaluatieketen stopt bij de laatste WANNEER en die update uitvoert. U beperkt ook niet de rijen die u probeert bij te werken; als u de ELSE niet doet, moet u de update op zijn minst vertellen om alleen de gewenste rijen bij te werken en niet alle rijen (zoals u aan het doen bent). Kijk naar de WHERE-clausule hieronder:
UPDATE my_table
SET field = CASE
WHEN id IN (/* true ids */) THEN TRUE
WHEN id IN (/* false ids */) THEN FALSE
END
WHERE id in (true ids + false_ids)