mysql.h
TRUNCATE TABLE
TRUNCATE TABLE table_name
TRUNCATE TABLE vacía una tabla por completo. Lógicamente, esto es equivalente a una sentencia DELETE que borre todas las filas, pero existen diferencias prácticas bajo algunas circunstancias.
Para InnoDB, TRUNCATE TABLE es mapeado a DELETE, de modo que no hay diferencia. para otros motores de almacenamiento, TRUNCATE TABLE difiere de DELETE FROM ... en lo siguiente, desde MySQL 4.0:
- El truncado trabaja suprimiendo y recreando la tabla, que es mucho más rápido que borrar filas una a una.
- TRUNCATE no es seguro a nivel de transacción; se puede obtener un error si se tienen transacciones activas o un bloqueo de tabla activo.
- No se devuelve el número de filas eliminadas.
- Mientras el fichero de definición de tabla 'table_name.frm' sea válido, la tabla puede ser recreada como una tabla vacía con TRUNCATE TABLE, aunque los ficheros de datos o índices estén corruptos.
- El manipulador de tabla no recordará el último valor usado para AUTO_INCREMENT, pero empezará a contar desde el principio. Esto es cierto incluso para tablas MyISAM, que generalmente no reutiliza los valores de secuencia.
En la versión 3.23 TRUNCATE TABLE se ejecuta como COMMIT; DELETE FROM table_name, de modo que se comporta como DELETE.
TRUNCATE TABLE es una extensión SQL de Oracle. Esta sentencia fue añadida a MySQL 3.23.28, aunque desde 3.23.28 a 3.23.32, la palabra clave TABLE debe ser omitida.