Non hai dimenticato di fare un "ALTRO" nella dichiarazione del caso?
UPDATE my_table
SET field = CASE
WHEN id IN (/* true ids */) THEN TRUE
WHEN id IN (/* false ids */) THEN FALSE
ELSE field=field
END
Senza ELSE, presumo che la catena di valutazione si fermi all'ultimo QUANDO ed esegua l'aggiornamento. Inoltre, non stai limitando le righe che stai tentando di aggiornare; se non esegui l'ELSE dovresti almeno dire all'aggiornamento di aggiornare solo le righe che desideri e non tutte le righe (come stai facendo). Guarda la clausola WHERE di seguito:
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)