SQLite3 で BOOL 値を扱うとき、SQLite3 には BOOLEAN 型がないので INTEGER で代用することになる。
0 を false, 1 を true とするときに、例えば
- 現在の値が 0 なら 1 にセット
- 現在の値が 1 なら 0 にセット
としたいときがあると思う。
現在の値を確認するために、まず "SELECT ..." で値を読み込んで、その値から判断して "UPDATE ..." とすると、2 Queries になってしまう。
「Making an sql "toggle" using a single query?」を参考に
UPDATE table SET flag = flag + 1 % 2 WHERE id = 127;
と剰余を使ってできた。他の SQL 環境では MOD 関数を使って
MOD(flag + 1, 2)
のような感じなるだろう。