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. El campo podría se un campo nchar que tenga los valores E para cuando está eliminado y A cuando no lo está.
  • En ocasiones no se podrá eliminar los registros por restricciones de tipo Foreign key.
  • 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 Propiedad Identity)

Instrucción Delete

Permite la eliminación de registros en una tabla.

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.
TablaNombre de la tabla donde se encuentran los registros a eliminar. Puede incluir el servidor, el esquema y el nombre de la tabla.
WhereEspecifica 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.

Usando la base de datos Northwind

Use Northwind

go

— 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)