Не сте ли забравили да направите „ELSE“ в изявлението на case?
UPDATE my_table
SET field = CASE
WHEN id IN (/* true ids */) THEN TRUE
WHEN id IN (/* false ids */) THEN FALSE
ELSE field=field
END
Без ELSE предполагам, че веригата за оценка спира в последното КОГА и изпълнява тази актуализация. Освен това не ограничавате редовете, които се опитвате да актуализирате; ако не направите ELSE, трябва поне да кажете на актуализацията да актуализира само редовете, които искате, а не всички редове (както правите вие). Вижте клаузата WHERE по-долу:
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)