(mysql.info) truncate
Info Catalog
(mysql.info) subqueries
(mysql.info) data-manipulation
(mysql.info) update
13.2.9 `TRUNCATE' Syntax
------------------------
TRUNCATE [TABLE] TBL_NAME
`TRUNCATE TABLE' empties a table completely. Logically, this is
equivalent to a `DELETE' statement that deletes all rows, but there are
practical differences under some circumstances.
For `InnoDB' before version 5.0.3, `TRUNCATE TABLE' is mapped to
`DELETE', so there is no difference. Starting with MySQL 5.0.3, fast
`TRUNCATE TABLE' is available. However, the operation is still mapped to
`DELETE' if there are foreign key constraints that reference the table.
(When fast truncate is used, it resets any `AUTO_INCREMENT' counter.
From MySQL 5.0.13 on, the `AUTO_INCREMENT' counter is reset by
`TRUNCATE TABLE', regardless of whether there is a foreign key
constraint.)
For other storage engines, `TRUNCATE TABLE' differs from `DELETE' in
the following ways in MySQL 5.0:
* Truncate operations drop and re-create the table, which is much
faster than deleting rows one by one.
* Truncate operations are not transaction-safe; an error occurs when
attempting one in the course of an active transaction or active
table lock.
* The number of deleted rows is not returned.
* As long as the table format file `TBL_NAME.frm' is valid, the
table can be re-created as an empty table with `TRUNCATE TABLE',
even if the data or index files have become corrupted.
* The table handler does not remember the last used `AUTO_INCREMENT'
value, but starts counting from the beginning. This is true even
for `MyISAM' and `InnoDB', which normally do not reuse sequence
values.
`TRUNCATE TABLE' is an Oracle SQL extension adopted in MySQL.
Info Catalog
(mysql.info) subqueries
(mysql.info) data-manipulation
(mysql.info) update
automatically generated byinfo2html