miércoles, 10 de diciembre de 2014

Trigger Delete (Disparador de borrado)

Un Trigger es una rutina especial que se ejecuta automáticamente cuando surgen eventos DML en nuestras tablas, es decir que es el gestor de base de datos es el que se encarga de activarlo en el momento en que se ejecuten las sentencias: Insert, Update y Delete. El Trigger para Delete al cual hacemos referencia en este ejemplo, evita que se realice un borrado masivo de una tabla o de una columna.




CREATE TRIGGER EvitarBorrado_Cnt_Comp ON Cnt_Comp FOR DELETE
AS
IF(SELECT COUNT(*) FROM deleted) >= 1
BEGIN
 raiserror('No se pueden borrar los datos de la tabla Cnt_Comp', 16, 1)
 rollback transaction
END

Su estructura indica que solo se puede borrar un registro a la vez, es decir se activa el disparador cuando se ejecuta un "Delete From Tabla". Solo permite un borrado así: "Delete from Tabla where campo = xx"
Hay que tener en cuenta que este disparador no funciona si se utiliza un Truncate Table, debido a que el trigger no reconoce este tipo de borrado.

Nota: ¿Como evitar que se realice un borrado masivo con Truncate?

No hay comentarios:

Publicar un comentario