En SQL , la TRUNCATE TABLE
declaración es una operación de lenguaje de definición de datos (DDL) que marca las extensiones de una tabla para la desasignación (vacía para su reutilización). El resultado de esta operación elimina rápidamente todos los datos de una tabla , por lo general eludiendo una serie de mecanismos de aplicación de la integridad. Se introdujo oficialmente en el estándar SQL: 2008 .
TRUNCATE TABLE elimina todas las filas de una tabla, pero la estructura de la tabla y sus columnas, restricciones, índices, etc. permanecen. Para eliminar la definición de la tabla además de sus datos, use la instrucción DROP TABLE.
La TRUNCATE TABLE mytable
declaración es lógica (aunque no físicamente) equivalente a la DELETE FROM mytable
declaración (sin una WHERE
cláusula). Las siguientes características se distinguen TRUNCATE TABLE
de DELETE
:
- En la base de datos de Oracle ,
TRUNCATE
está implícitamente precedido y seguido de una operación de confirmación . (Este también puede ser el caso en MySQL , cuando se utiliza un motor de almacenamiento transaccional). - Por lo general,
TRUNCATE TABLE
elimina rápidamente todos los registros de una tabla al desasignar las páginas de datos utilizadas por la tabla. Esto reduce la sobrecarga de recursos de registrar las eliminaciones, así como la cantidad de bloqueos adquiridos. Los registros eliminados de esta manera no se pueden restaurar en una operación de reversión. Dos excepciones notables a esta regla son las implementaciones que se encuentran en PostgreSQL y Microsoft SQL Server , las cuales permiten que lasTRUNCATE TABLE
declaraciones se confirmen o deshagan transaccionalmente. - No se puede especificar una
WHERE
cláusula en unaTRUNCATE TABLE
declaración, es todo o nada. TRUNCATE TABLE
no se puede usar cuando una clave externa hace referencia a la tabla que se truncará, ya que lasTRUNCATE TABLE
declaraciones no activan los activadores . Esto podría resultar en datos inconsistentes porqueON DELETE
/ON UPDATE
triggers no se dispararía.- En algunos sistemas informáticos,
TRUNCATE TABLE
restablece el recuento de una columna de identidad a la semilla de la identidad . - En Microsoft SQL Server 2000 y posteriores en modo de recuperación completa, se registran todos los cambios en la base de datos, por lo que las
TRUNCATE TABLE
declaraciones se pueden usar para las tablas involucradas en el trasvase de registros . [1] - IBM Db2 es compatible
TRUNCATE TABLE
con 9.7 o posterior.