Curso de Fundamentos de Bases de Datos

DELETE vs borrado lógico en bases de datos

Curso de Fundamentos de Bases de Datos

Contenido del curso

Grabación

PlatziLearn

0:009:03

Recursos

Resumen

Cuando trabajas con bases de datos de negocio, borrar una fila no es tan simple como eliminar una línea en una hoja de cálculo. Un DELETE físico es irreversible: si borras un cliente activo, destruyes su historial de pedidos, su información y toda relación asociada. Por eso, en producción los equipos de datos prefieren el borrado lógico, una técnica que mantiene la información intacta mientras marca el registro como inactivo.

¿Cómo funciona el DELETE físico en SQL?

El comando DELETE elimina permanentemente filas de una tabla. Su sintaxis es directa, pero exige precaución. La regla de oro es nunca ejecutar un DELETE sin WHERE, porque sin esa cláusula se borran todas las filas de la tabla [01:50].

sql DELETE FROM clientes WHERE cliente_id = 99;

En el ejemplo anterior, el cliente con ID 99 desaparece por completo de la tabla. Al ejecutar un SELECT * FROM clientes después del DELETE, ese registro ya no existe [03:10].

¿Qué hace el returning en un DELETE?

El modificador RETURNING permite ver exactamente qué filas fueron eliminadas, lo cual es útil para confirmar la operación antes de perder el rastro de los datos [04:00].

sql DELETE FROM detalle_pedidos WHERE pedido_id = 100 RETURNING *;

Este comando borra los registros del pedido 100 en la tabla detalle_pedidos y devuelve las filas eliminadas como resultado. En el ejemplo, se confirma que la fila con pedido ID 100 y cantidad 1 fue removida [05:05].

¿Por qué el DELETE físico es peligroso en producción?

Cuando un cliente desaparece físicamente de la tabla, desaparece también su historial y toda la información relacionada. En un entorno de negocio, esto rompe la consistencia de la base de datos y puede afectar reportes, auditorías y relaciones entre tablas [05:30].

¿Qué es el borrado lógico y cómo se implementa?

El borrado lógico consiste en agregar una columna llamada activo (de tipo booleano) a la tabla. En lugar de eliminar la fila, se actualiza ese campo a false. La fila sigue existiendo, pero se trata como inactiva [06:10].

sql UPDATE clientes SET activo = false WHERE cliente_id = 5;

Esta operación utiliza el comando UPDATE en vez de DELETE. El cliente con ID 5 permanece en la tabla, pero su estado cambia a inactivo. Así se preserva la integridad referencial y el historial completo [06:50].

¿Cómo consultar clientes activos e inactivos?

Una vez implementado el borrado lógico, las consultas deben filtrar por el campo activo [07:30]:

  • Clientes activos: SELECT * FROM clientes WHERE activo = true;
  • Clientes inactivos: SELECT * FROM clientes WHERE activo = false;

La tabla permanece completa. Lo único que cambia es la condición de filtrado, lo que permite mantener el historial sin perder datos.

¿Cómo reactivar un cliente inactivo?

Si un cliente vuelve a hacer negocio, basta con actualizar su campo activo a true [08:15]:

sql UPDATE clientes SET activo = true WHERE cliente_id = 5 RETURNING *;

El RETURNING confirma que el cliente ID 5, Eva López, vuelve a estar activo. A partir de ese momento, aparecerá nuevamente en las consultas de clientes activos.

¿Cuándo elegir borrado lógico sobre DELETE?

La decisión depende del tipo de dato:

  • Datos de negocio (clientes, pedidos, facturas): el borrado lógico conserva la información histórica y mantiene la consistencia.
  • Datos temporales o de prueba: el DELETE físico es aceptable cuando no hay relaciones que preservar.
  • Requisitos de auditoría: muchas regulaciones exigen conservar registros, lo que hace obligatorio el borrado lógico.

Al usar borrado lógico nunca pierdes la información histórica y conservas la integridad con todos los elementos relacionados en la base de datos. El patrón es simple: un UPDATE con una columna booleana reemplaza al DELETE y te da control total sobre el ciclo de vida de tus registros.

Practica desactivando tres clientes con UPDATE activo = false, usa RETURNING para confirmar los cambios, y comparte en los comentarios en qué otros escenarios aplicarías el borrado lógico.

DELETE vs borrado lógico en bases de datos

Curso de Fundamentos de Bases de Datos

Clase 10 de 33

Clase 10 / 33