指摘・レビュー4 択難易度 応用

削除 SQL の条件列を expires_at でなく created_at と共有してしまった。訂正は?

DELETE FROM sessions WHERE created_at < '2026-10-01';

正答

  1. 訂正です。条件列は created_at ではなく expires_at です。created_at 版を実行した場合、有効なセッションも消えています。
  2. 列名、ちょっと違いました。正しいほうに直して実行してください。
  3. expires_at(さっきの SQL の列名です)
  4. 訂正です。列名は expires_at でしたが、created_at でもだいたい同じ行が消えるので、実行済みでも問題ありません。

解説

created_at で消すと「10 月より前に作られた」セッションがすべて消え、まだ期限内のものも含まれる。訂正には、どの部分が誤りで正しくは何か、誤った版を実行した場合に何が起きたかを書く。「expires_at」だけでは、どこをどう直すのか読み手が推測することになる。「だいたい同じ」は影響を過小に伝え、利用者が突然ログアウトされる原因の調査を遅らせる。

参考: www.sqlite.org

correctionsqldelete

この問題を含む 指摘・レビュー のテストを制限時間つきで解く

指摘・レビュークイズへ