Använd INTE :
UPDATE table SET boolean_field = NOT boolean_field WHERE id = :id
När det gamla värdet är lika med FALSE blir det SANT och tvärtom. Ett NULL-fält vänds inte, det finns inget att vända till.
Komplett exempel:
CREATE TABLE test(id serial, boolean_field boolean);
INSERT INTO test(boolean_field)
VALUES(null),(false), (true)
RETURNING *;
OCH kör testet:
UPDATE test
SET boolean_field = NOT boolean_field
RETURNING *;