Diferencia entre Truncate y Delete

¿Qué diferencia hay entre TRUNCATE y DELETE? Aparentemente son iguales, se usan para eliminar datos de una tabla, solo datos, la estructura se mantiene.

TRUNCATE

Este comando remueve todas las filas de una tabla sin registrar las eliminaciones individuales en el log de transacciones. Prácticamente hace lo mismo que DELETE sin modificar o borrar la estructura de la tabla, sin embargo no se puede utilizar la clausula WHERE. TRUNCATE no permite filtrar por filas, elimina todos los registros de una tabla.

Por ejemplo:

TRUNCATE TABLE Autores

Esto eliminará todos los registros de la tabla Autores.

DELETE

DELETE también remueve las filas de una tabla, pero registra las eliminaciones individuales en el log de transacciones. Podemos utilizar la clausula WHERE para filtrar las filas que necesitemos eliminar.

Ejemplo:

DELETE FROM Autores (elimina todas las filas de la tabla autores)

DELETE FROM Autores WHERE IdCiudad = 30 (elimina las filas de la tabla autores que coincide con la condición indicada)

DIFERENCIAS ENTRE TRUNCATE Y DELETE

Ahora que sabemos en que consiste cada sentencia, veamos las semejanzas y diferencias:

- Ambas eliminan los datos, no la estructura.
- Solo DELETE permite la eliminación condicional de los registros.
- DELETE es una operación registrada en el log de transacciones, basada en registrar cada eliminación individual.
- TRUNCATE es una operación registrada en el log de transacciones, pero como un todo, en conjunto, no por eliminación individual. TRUNCATE se registra como una liberación de las páginas de datos en las cuales existen los datos.
- TRUNCATE es más rápida que DELETE.
- Ambas se pueden deshacer con un ROLLBACK.
- TRUNCATE reiniciará el contador para una tabla que contenga una columna IDENTITY.
- DELETE mantendrá el contador de la tabla para una columna IDENTITY.
- TRUNCATE es un comando DDL(lenguaje de definición de datos) mientras que DELETE es un DML(lenguaje de manipulación de datos).
- TRUNCATE no desencadena un TRIGGER, DELETE sí.

Restaurar una base de datos en un punto especifico del tiempo

En mi otro blog PCT (Peleandome con todos), he publicado un post sobre como recuperar una base de datos en un punto especifico del tiempo. Cabe señalar que para poder realizar ese proceso y seguir los pasos indicados el modo de recuperación debe ser Completo o FULL, si no es así, debe seguirse otros pasos que no se han contemplado.

Aquí el enlace al post.

Mostrar un texto según el valor ingresado.

Una compañera de trabajo tenia un problema y me pidió ayuda para resolverlo.

Ella haría una evaluación, y según los resultados, mostraría un texto en una hoja de Excel.

  • De 0 a 10 BAJO
  • De 11 a 21 PROMEDIO BAJO
  • De 22 a 32 PROMEDIO
  • De 33 a 43 PROMEDIO ALTO
  • De 44 a 52 ALTO

Era una aplicación de la función SI(lógica,valor positivo, valor negativo), pero anidada 5 veces lo que le llevaba a errores y en caso quisiera aumentar el número de rangos, se complicaría más.

Así que cree un modulo Visual Basic, en el libro de Excel y escribí esta función:

Public Function cmCategoria(ByVal Valor As Integer) As String

ARESULTADO = ""




Select Case Valor
Case 0 To 10
ARESULTADO = "BAJO"
Case 11 To 21
ARESULTADO = "PROMEDIO BAJO"
Case 22 To 32
ARESULTADO = "PROMEDIO"
Case 33 To 43
ARESULTADO = "PROMEDIO ALTO"
Case 44 To 52
ARESULTADO = "ALTO"
End Select

cmCategoria = ARESULTADO


End Function


Mi amiga, pudo utilizar esta función como si fuera una de las que viene integrada con el Excel y su mantenimiento le es mas facil.