Truncate table en Oracle

El comando truncate table en Oracle se utiliza para eliminar todos los registros de una tabla de una manera mucho más rápida que con el comando delete. El motivo por el que el comando truncate es más eficiente que el comando delete, es que este ultimo, hace un escaneo de la tabla antes de borrar y el truncate no realiza ese escaneo.

Sintaxis

Ejecuta la siguiente sentencia para eliminar todos los registros de una tabla:

TRUNCATE TABLE nombre_tabla;

En la anterior sintaxis:

  • Escribimos después de la palabra TRUNCATE TABLE el nombre de la tabla de la que queremos borrar sus datos.

Ejemplo

Truncar una tabla

En el siguiente ejemplo borramos todos los registros de la tabla empleados:

TRUNCATE TABLE empleados;

Truncar tabla y todo objeto que depende de ella

Si la tabla tiene una clave externa (foreign key) con otra tabla, por defecto Oracle no eliminara los datos de la otra tabla. Si quieres que se borren en ambas tablas debes lanzar el siguiente comando:

TRUNCATE TABLE nombre_tabla 
CASCADE;

En el siguiente ejemplo estamos eliminado datos de la tabla empleados pero ademas estamos borramos datos de aquellas tablas que tengan referencias a la tabla recursos.

TRUNCATE TABLE empleados CASCADE;

Usa la opción CASCADE con precaución, puedes borrar datos en tablas que no has tenido en cuenta. Si tienes una tabla con claves externas y no usas la opción CASCADE no te permitirá realizar el truncado, esto se debe a que por defecto el comando truncate table usa la opción restrict para prevenir este tipo de problemas.

Escribir un comentario