Brug IKKE :
UPDATE table SET boolean_field = NOT boolean_field WHERE id = :id
Når den gamle værdi er lig FALSK, bliver den til SAND og omvendt. Et NULL-felt vender ikke, der er ikke noget at vende efter.
Komplet eksempel:
CREATE TABLE test(id serial, boolean_field boolean);
INSERT INTO test(boolean_field)
VALUES(null),(false), (true)
RETURNING *;
OG kør testen:
UPDATE test
SET boolean_field = NOT boolean_field
RETURNING *;