domingo, 4 de septiembre de 2016

Diferencia entre delete y truncate en SQL Server

Básicamente no existe diferencia entre ambos comandos. Veamos la siguiente ecuación:

DELETE FROM Empleado = TRUNCATE TABLE Empleado

Ambas sentencias eliminan todos los datos de la tabla Empleado.

Ahora la diferencia surge cuando agregamos la palabra reservada WHERE al DELETE con lo que podemos concluir que DELETE FROM permite el borrado selectivo de los registros de una tabla mientras que TRUNCATE TABLE ejecuta un borrado total de los registros de una tabla.

Ejemplo:

DELETE FROM Empleado WHERE edad = 25 <> TRUNCATE TABLE Empleado

Estas dos sentencias son diferentes dado que en el DELETE solo se eliminan los empleados que tengan 25 años y en el TRUNCATE se eliminan todos los empleados. 

A partir de esta simple diferencia podemos enumerar mas:

  • TRUNCATE TABLE es una operación DDL (Data Definition Language) mientras que DELETE FROM es una operación DML (Data Manipulation Language) esto se refiere a que TRUNCATE TABLE es una operación para modificar la estructura de una tabla, mientras que DELETE FROM sirve para gestionar los datos de una tabla.
  • TRUNCATE TABLE no permite el borrado si es que la tabla tiene FK (llaves foráneas) en otras tablas, mientras que DELETE FROM puede eliminar los registros que tienen FK de otras tablas y no puede eliminar los registros de una tabla que tiene FK en otras tablas.
  • TRUNCATE TABLE es una forma rápida de eliminar todos los registros de una tabla, mientras que DELETE FROM es mas lento.
  • TRUNCATE TABLE reinicia a 1 o al valor que se especifique de un campo identity de una tabla, mientras que DELETE FROM no reinicia el valor campo identity es decir la numeración de los registros queda incompleta. 

No hay comentarios:

Publicar un comentario