DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(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