Har du ikke glemt at lave et "ELSE" i sagsfremstillingen?
UPDATE my_table
SET field = CASE
WHEN id IN (/* true ids */) THEN TRUE
WHEN id IN (/* false ids */) THEN FALSE
ELSE field=field
END
Uden ELSE, antager jeg, at evalueringskæden stopper ved det sidste HVORNÅR og udfører den opdatering. Du begrænser heller ikke rækkerne, som du forsøger at opdatere; hvis du ikke gør det ANDET, skal du i det mindste fortælle opdateringen om kun at opdatere de rækker, du ønsker, og ikke alle rækkerne (som du gør). Se WHERE-sætningen nedenfor:
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)