¿No te olvidaste de hacer "ELSE" en la declaración 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
Sin ELSE, asumo que la cadena de evaluación se detiene en el último CUÁNDO y ejecuta esa actualización. Además, no está limitando las filas que está intentando actualizar; si no hace ELSE, al menos debe decirle a la actualización que solo actualice las filas que desea y no todas las filas (como lo está haciendo). Mire la cláusula WHERE a continuación:
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)