使用しない :
UPDATE table SET boolean_field = NOT boolean_field WHERE id = :id
古い値がFALSEの場合、TRUEになり、その逆も同様です。 NULLフィールドは反転せず、反転するものはありません。
完全な例:
CREATE TABLE test(id serial, boolean_field boolean);
INSERT INTO test(boolean_field)
VALUES(null),(false), (true)
RETURNING *;
そして、テストを実行します:
UPDATE test
SET boolean_field = NOT boolean_field
RETURNING *;