id 42 だけ無効化したいのに全行が更新された。UPDATE 文を 1 行で正しく直して書いてください。
BEGIN;UPDATE usersSET status = 'inactive';WHERE id = 42;COMMIT;正答
正答
UPDATE users SET status = 'inactive' WHERE id = 42;解説
3 行目の末尾のセミコロンで UPDATE 文が終わり、WHERE の無い UPDATE として全行の status が書き換わる。続く WHERE id = 42; は独立した不正な文としてエラーになるが、更新は既に実行済み。SET の後ろのセミコロンを消し、WHERE までを 1 文にすれば直る。WHERE の行を SET の前に移す直し方は誤りで、UPDATE は SET の後に WHERE を書く決まり。実行前に同じ条件の SELECT で対象行数を確かめると事故を防げる。
参考: www.sqlite.org
この問題を含む SQL のテストを制限時間つきで解く
SQLクイズへ