Utilice el comando TRUNCATE para eliminar todas las filas de una tabla. Esto tiene el mismo efecto que el comando DELETE, pero es más rápido que el comando
DELETE para tablas grandes. Además, el comando TRUNCATE libera todo el espacio de disco asignado a una tabla, haciendo que el espacio esté disponible para volver a utilizarlo.
Puede utilizar TRUNCATE con una transacción explícita o un procedimiento almacenado para hacer otros cambios relacionados con los datos en una unidad atómica. Si se utiliza TRUNCATE de esta manera:
- Excepto en el caso en el que la tabla que se está truncando se creó en la misma transacción, el almacenamiento de tabla no se libera (no se hace disponible para su reutilización) antes que se confirma la transacción de truncamiento.
- La transacción de truncamiento se puede retrotraer, en cuya caso el almacenamiento y contenido de la tabla permanecerá intacto.
- La tabla está bloqueada y no se permite el acceso simultáneo (incluidos los comandos SELECT) a la tabla desde otras sesiones o transacciones se permiten hasta que se confirma o retrotrae la transacción de truncamiento. La retrotracción se puede producir como resultado de un comando ROLLBACK o un fallo de ejecución en la transacción.
- Si la transacción de truncamiento accede a otras tablas, se incrementa la posibilidad de punto muerto. Puede evitar este problema emitiendo LOCK TABLE <tablename> IN ACCESS EXCLUSIVE MODE al comienzo de cualquier transacción o procedimiento que trunca una tabla o tablas.
Consulte LOCK TABLE para obtener directrices sobre el uso de ese comando.
- TRUNCATE TABLE es mucho más rápido que suprimir todas las filas con DELETE
FROM <table> y tampoco requiere una GROOM TABLE posterior para reclamar el espacio. Pero incurre un pequeño riesgo que en algunos casos, transacciones concurrentes intentando acceder y truncar la misma tabla podían ver el mensaje ERROR: Cannot access table
because of concurrent truncateo ERROR: Cannot truncate
table because of concurrent insert or update. Puede minimizar el riesgo utilizando el comando LOCK TABLE y conservando una transacción que trunca una o más tablas activas no más tiempo del necesario para conseguir su objetivo.
Sintaxis
Sintaxis para truncar una tabla vacía:
TRUNCATE [ TABLE ] <name>
Entrada
El comando TRUNCATE toma la siguiente entrada:
Tabla 1. Salida TRUNCATE| Entrada |
Descripción |
| <name> |
El nombre de la tabla que desea truncar. |
Salida
El comando TRUNCATE tiene la siguiente salida:
Tabla 2. Salida de TRUNCATE| Salida |
Descripción |
| TRUNCATE TABLE |
El comando se ha ejecutado correctamente. |
Privilegios
Es necesario ser el
usuario administrativo, el propietario de la tabla o el propietario de la base de datos
o el esquema o la cuenta debe tener el comando Truncate en la tabla o en la
clase de objeto Table.
Uso
A continuación, se proporciona un uso de muestra.