SQL4 択難易度 標準

BEGIN の後に UPDATE を実行し、まだ COMMIT していない。取り消すには?

正答

  1. ROLLBACK; を実行する
  2. COMMIT; を実行する
  3. 逆の値で UPDATE をもう一度実行する
  4. BEGIN; をもう一度実行する

解説

トランザクションの中で行った変更は COMMIT するまで確定していないため、ROLLBACK を実行すれば BEGIN 時点の状態に戻る。COMMIT は逆に変更を確定させる操作。逆の値で UPDATE をやり直す方法は元の値を正確に覚えている必要があり、複数行を変えた後では現実的でない。BEGIN を重ねて実行しても取り消しにはならず、SQLite では入れ子のトランザクションはエラーになる。

参考: www.sqlite.org

transactionrollback

この問題を含む SQL のテストを制限時間つきで解く

SQLクイズへ