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.