Verwenden Sie NICHT :
UPDATE table SET boolean_field = NOT boolean_field WHERE id = :id
Wenn der alte Wert gleich FALSE ist, wird er zu TRUE und umgekehrt. Ein NULL-Feld wird nicht umgedreht, es gibt nichts zum Umklappen.
Vollständiges Beispiel:
CREATE TABLE test(id serial, boolean_field boolean);
INSERT INTO test(boolean_field)
VALUES(null),(false), (true)
RETURNING *;
UND den Test ausführen:
UPDATE test
SET boolean_field = NOT boolean_field
RETURNING *;