Whenever we delete records then they are stored in data
dictionary and can be retrieved later ie by roll back.
but when we truncate then the memory used by the records
which is to be truncated is released and it cannot be
rolled back.
when truncate command is issued, all the rows from the
table are deleted and the memory space occupied by the
table in the tablespace is also released whereas when
delete command is issued, only all the rows are deleted
fronm the table
Delete command will remove the data values ( all the
records of table) and space and table structure will be
ramain. We cannot free the space and remove the table
structure using Delete command.
Truncate command will free the memory and removes table
structure from data dictionary.
ramumcato@yahoo.com
Deletes perform normal DML. That is, they take locks on
rows, they generate redo and they require segments in the
UNDO tablespace. Deletes clear records out of blocks
carefully. If a mistake is made a rollback can be issued to
restore the records prior to a commit.
Truncates are DDL and truncate moves the High Water Mark
of the table back to zero. No row-level locks are taken, no
redo or rollback is generated.so they have the same effect
as a delete, but without all the overhead. Just one slight
problem: a truncate is a DDL command, so you can't roll it
back if you decide you made a mistake. (It's also true that
you can't selectively truncate -no "WHERE" clause is
permitted, unlike with deletes, of course).
You cannot TRUNCATE a table that has any foreign key
constraints. You will have to remove the contraints,
TRUNCATE the table, and reapply the contraints.
You can DELETE any row that will not violate a constraint,
while leaving the foreign key or any other contraint in place.
DELETE: DML, Manual Commit, Till not committed can be
rollback, can be applied for both row level as well as
table level, can be used in trigger, doesn't release memory.
TRUNCATE: DDL, auto commit, cann't rollback, applied table
level, cann't be used in trigger, releases memory.
In both cases structure remains.
Delete is associated with rollback segments like U can undo
it before committing and U have a choice of deleting a
specific row or rows where as
Truncate is not associated with rollback segments ie U cant
undo it and U cant delete a row/rows of ur choice