危険察知難易度 基礎

状況

本番 DB から、条件に合う不要な行を DELETE する手順書を書いている。退避テーブルへのコピーと DELETE の件数を、事前に数えた件数と突き合わせる方針である。

作業する順番に並べてください。

正答

  • DELETE を実行し、削除件数が SELECT の件数と一致するか見る
  • 対象行を退避テーブルにコピーし、件数が SELECT と同じか見る
  • 同じ WHERE 条件の SELECT で対象件数を数える
  • アプリの画面で、対象データが消えたことを確かめる
正しい順番
  1. 同じ WHERE 条件の SELECT で対象件数を数える
  2. 対象行を退避テーブルにコピーし、件数が SELECT と同じか見る
  3. DELETE を実行し、削除件数が SELECT の件数と一致するか見る
  4. アプリの画面で、対象データが消えたことを確かめる

解説

最初に同じ WHERE 条件の SELECT で件数を数えると、それが以降のすべての照合の基準になる。次に対象行を退避しておけば、誤って消しても戻せる。DELETE の件数が基準と違えば、その場で止めて退避分から戻せる。画面での確認は DELETE が終わってからでないと意味がない。退避より先に DELETE すると、件数が違ったときに戻す手段がなく、確認は後悔にしかならない。

sqldeletebackupprocedure

この問題を含む 危険察知 のテストを制限時間つきで解く

危険察知クイズへ