TRUNCATE TABLE tbl_name
TRUNCATE TABLE vacía una tabla
completamente. Lógicamente, esto es equivalente a un comando
DELETE que borre todos los registros, pero
hay diferencias prácticas bajo ciertas circunstáncias.
Para InnoDB antes de la versión 5.0.3,
TRUNCATE TABLE se mapea a
DELETE, así que no hay diferencia. A partir
de MySQL/InnoDB-5.0.3, está disponible TRUNCATE
TABLE muy rápido. La operación se mapea a
DELETE si hay restricciones de clave foránea
que referencien la tabla.
Para otros motores, TRUNCATE TABLE difiere de
DELETE FROM en los siguientes puntos en MySQL
5.0:
Las operaciones de truncado destruyen y recrean la tabla, que es mucho más rápido que borrar registros uno a uno.
Las operaciones de truncado no son transaccionales; ocurre un error al intentar un truncado durante una transacción o un bloqueo de tabla.
No se retorna el número de registros borrados.
Mientras el fichero de definición de la tabla
sea válido, la tabla puede recrearse como una vacía con
tbl_name.frmTRUNCATE TABLE, incluso si los ficheros
de datos o de índice se han corrompido.
El tratador de tablas no recuerda el último valor
AUTO_INCREMENT usado, pero empieza a
contar desde el principio. Esto es cierto incluso para
MyISAM y InnoDB, que
normalmente no reúsan valores de secuencia.
TRUNCATE TABLE es una extensión de Oracle
SQL adoptada en MySQL.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.
