El comando TRUNCATE no es un comando DML, es un comando DDL. La diferencia
es enorme. Los comandos DML afectan datos como el INSERT, UPDATE y DELETE y son
parte de una transacción. Por ahora, solo decir que una transacción puede ser
controlada, en el sentido de decir que el usuario elige si el trabajo de una transacción
permanece o si se revierte. Esto es muy útil, pero obliga a la base de datos
para hacer el trabajo adicional detrás de las escenas que el usuario no es
consciente de. Comandos DDL no son transacciones de usuario (aunque dentro de
la base de datos, que son, de hecho, implementado como transacciones, pero los
desarrolladores no pueden controlar), y no hay posibilidad de elegir si desea
que sean permanentes o para revertirlas. Una vez ejecutado, se hacen. Sin
embargo, en comparación con DML, son muy rápidos.
Desde el punto de vista de un usuario un Truncation es equivalente  a la ejecución de un DELETE de las filas de
una tabla, un DELETE sin clausula WHERE. Pero mientras un DELETE puede tomar un
tiempo un Truncation es instantáneo. 
Las transacciones consisten de INSERT, UPDATE y DELETE o incluso MERGE
pueden ser hechas permanentes con COMMIT o reversadas con un ROLLBACK. Un comando
TRUNCATE, como cualquier otro comando DDL, es inmediatamente permanente y nunca
puede ser reversado.
Comentarios
Publicar un comentario