Eliminar registros – Delete

Eliminación de Registros

Eliminar los registros de las tablas o vistas es una transacciones que debe tenerse mucho cuidado en ejecutar.

Importante:

  • Es recomendable que los registros tengan una eliminación lógica, utilizar para esto un campo para manejar el Estado del registro.
  • En ocasiones no se podrá eliminar los registros por restricciones de tipo Foreign key. (Ver Cláves Foráneas)
  • En lo posible no implemente el borrado en cascada.
  • Puede usar transacciones para la eliminación física de registros para tener la posibilidad de anular la eliminación si se comete algún error.
  • Puede usar Truncate con algún cuidado especial para eliminar todos los registros de la tabla.
  • Recuerde que si se eliminan los registros en una tabla con un campo Identity, se debe restablecer la propiedad al valor inicial.(Ver Post Propiedad Identity)
  • Si se eliminan los registros físicamente, se sugiere guardarlos en un historial. (Ver Triggers – Historia de eliminados)

Sintaxis:

Delete
[ TOP ( expression ) [ PERCENT ] ]
[ FROM ] Tabla
[ WHERE <Condición> ]

Donde:

Top n [Percent] Especifica los primeros registros que se eliminarán, puede expresarse en porcentaje.
Tabla Nombre de la tabla donde se encuentran los registros a eliminar. Puede incluir el servidor, el esquema y el nombre de la tabla.
Where Especifica la condición o condiciones que debe de cumplir los registros para eliminarse.



Ejercicios

Vamos a incluir algunos ejercicios, tenga cuidado con hacer estas pruebas, posiblemente se elimine información útil.

— Eliminar los productos descontinuados
Delete Products where Discontinued = 1
go

— Eliminar los clientes de España
Delete from Customers where Country = ‘Spain’
go

— Eliminar los 5 productos mas caros.
delete Products
where ProductID in (select top 5 ProductID from Products order by UnitPrice desc)
go
— La instrucción anterior es correcta, la restricción de tipo Foreign key con la tabla “Order Details” no permite la eliminación. Se ha incluido una subconsulta. (Ver Subconsultas)