Ir al contenido principal

Eliminando Filas con TRUNCATE

El comando TRUNCATE es un DDL (Lenguaje de Definición de Datos).  Opera dentro del diccionario de datos y afecta a la estructura de la tabla, no el contenido de la tabla. Sin embargo, el cambio se hace a la estructura tiene el efecto secundario de destruir todas las filas de la tabla.
TRUNCATE limpia completamente la Tabla, no existe el concepto de selección de filas.
Una parte de la definición de una tabla que se almacena en el diccionario de datos es la ubicación física de la tabla. Cuando es creada, se le asigna una sola área de espacio, de tamaño fijo. En los DATAFILES de la base de datos. Esto es conocido como un EXTEND y estará vacio. Posteriormente filas son insertadas y los EXTEND serán llenados. Una vez llenos los EXTEND serán asignados más automáticamente.
Una tabla por lo tanto está compuesta de uno o más EXTEND. Que mantienen o almacenan las filas. Así como el seguimiento de la asignación de EXTEND’S, el diccionario de datos registra la cantidad de espacio asignado a la tabla que ha sido utilizado. Esto es hecho con el Hight Water Mark. El Hight Water Mark es la última posición en el último EXTEND que ha sido utilizado. Todo el espacio por debajo de la Hight Water Mark ha sido utilizado por alguna fila. Y nada del espacio de la Hight Water Mark ha sido utilizado todavía.
Note que puede hacer un monto de espacio por debajo de la Hight Water Mark que no está siendo utilizado en este momento; esto es porque filas ha sido eliminadas con el comando DELETE. Inserción de filas empuja hacia arriba la Hight Water Mark. Eliminación de filas deja la Hight Water Mark en su lugar. El espacio que ocupaban las filas permanece asignado a la tabla pero se libero  para insertar más filas.
El TRUNCATE a una tabla reinicia la Hight Water Mark, en el diccionario de datos. La posición registrada de la Hight Water Mark se mueve al comienzo de la primera parte de la tabla. Oracle asume que no puede haber ninguna fila encima de la Hight Water Mark, esto tiene el efecto de eliminar todas las filas de la tabla. La Tabla se ​​vacía y permanece vacío hasta inserciones posteriores comienzan a impulsar la Hight Water Mark. De este modo, un comando DDL, que no hace más que hacer una actualización en el diccionario de datos, puede aniquilar a miles de millones de filas en una tabla en un instante.

La sintaxis:


TRUNCATE TABLE table;

Comentarios