Oracle Database SQL(ORACLE MASTER Silver SQL 2019) 無料問題 9 / 10 ・ 分野12: DDLによる表とその関係の管理
employees 表には 5 行ある。通常の表に対して次の文を順に実行した。最後の SELECT が返す値はどれか。 TRUNCATE TABLE employees; ROLLBACK; SELECT COUNT() FROM employees;
- 0:削除は取り消せず空のまま
- エラー:ROLLBACK 後は表を参照できない
- 5:ROLLBACK で行が元に戻る
- 4:最後に削除した1行が戻る
正解と解説を見る
正解: A
正解の理由
SQL Language Reference の「TRUNCATE TABLE」は、TRUNCATE TABLE 文を ROLLBACK で取り消すことはできず、FLASHBACK TABLE で内容を取り出すこともできないと定める。ROLLBACK のあとも表は空なので、COUNT() の値は 0 になる。
違う選択肢
「5:ROLLBACK で行が元に戻る」… TRUNCATE TABLE 文は ROLLBACK では取り消せない。ROLLBACK で行を戻せるのは DELETE 文である
「4:最後に削除した1行が戻る」… 行が部分的に戻ることは無い。TRUNCATE は全行を削除し、その結果を取り消すことはできない
「エラー:ROLLBACK 後は表を参照できない」… ROLLBACK を実行しても表は参照できる。この例では、削除された状態のまま 0 行を数える
押さえどころ
DELETE は ROLLBACK で戻せるが、TRUNCATE は戻せない。TRUNCATE は DDL 文で、実行すると確定する。
Oracle Database SQL(ORACLE MASTER Silver SQL 2019)の演習アプリ(無料10問・全問は購入で)へ