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.