http://dev.mysql.com/doc/refman/5.1/en/truncate-table.html
According to this URL, as of MySQL 5.1.32, TRUNCATE TABLE
is DDL and NOT DML like DELETE. This means that TRUNCATE TABLE
will cause an implicit COMMIT
in the middle of a transaction block. So, use DELETE FROM
on a table you need to empty instead of TRUNCATE TABLE
.
Even DELETE FROM tblname;
can be rolled back. It could take a while to rollback, so make sure InnoDB is properly tuned to handle the transaction time for such rollback possibilities.