状況
本番 DB から、条件に合う不要な行を DELETE する手順書を書いている。退避テーブルへのコピーと DELETE の件数を、事前に数えた件数と突き合わせる方針である。
作業する順番に並べてください。
正答
- DELETE を実行し、削除件数が SELECT の件数と一致するか見る
- 対象行を退避テーブルにコピーし、件数が SELECT と同じか見る
- 同じ WHERE 条件の SELECT で対象件数を数える
- アプリの画面で、対象データが消えたことを確かめる
正しい順番
- 同じ WHERE 条件の SELECT で対象件数を数える
- 対象行を退避テーブルにコピーし、件数が SELECT と同じか見る
- DELETE を実行し、削除件数が SELECT の件数と一致するか見る
- アプリの画面で、対象データが消えたことを確かめる
解説
最初に同じ WHERE 条件の SELECT で件数を数えると、それが以降のすべての照合の基準になる。次に対象行を退避しておけば、誤って消しても戻せる。DELETE の件数が基準と違えば、その場で止めて退避分から戻せる。画面での確認は DELETE が終わってからでないと意味がない。退避より先に DELETE すると、件数が違ったときに戻す手段がなく、確認は後悔にしかならない。
この問題を含む 危険察知 のテストを制限時間つきで解く
危険察知クイズへ