hr@ORCL> select * from t; ID TEST ---------- ---------- 1 g 3 d 5 t hr@ORCL> commit; Commit complete. hr@ORCL> delete from t where id=5; 1 row deleted. hr@ORCL> select * from t; ID TEST ---------- ---------- 1 g 3 d hr@ORCL> rollback; Rollback complete. hr@ORCL> select * from t; ID TEST ---------- ---------- 1 g 3 d 5 t
hr@ORCL> select * from t; ID TEST ---------- ---------- 1 g 3 d 5 t hr@ORCL> truncate table t; Table truncated. hr@ORCL> select * from t; no rows selected hr@ORCL> rollback; Rollback complete. hr@ORCL> select * from t; no rows selected
The drop command means delete the table from the database. The drop command is a data definition language (DDL) command and this is a table oriented command. We can delete all rows and also the table definition, indexes, privileges,triggers and all storage parameters. The rollback is not possible. We can not use undo space。
hr@ORCL> drop table t; Table dropped. hr@ORCL> select * from t; select * from t * ERROR at line 1: ORA-00942: table or view does not exist hr@ORCL> rollback; Rollback complete. hr@ORCL> select * from t; select * from t * ERROR at line 1: ORA-00942: table or view does not exist
In sum,DROP and TRUNCATE are DDL commands, whereas DELETE is a DML command. Therefore DELETE operations can be rolled back (undone), while DROP and TRUNCATE operations cannot be rolled back.From Oracle 10g a table can be "undropped". Example:
hr@ORCL> flashback table t to before drop; Flashback complete.