Hola a todos, tengo una base de datos con una tabla llamada gestiones, muchas veces eliminan información de esa tabla directamente desde la base de datos, es decir con un DELETE (inevitable jejee) ... pero como medida posterior a una auditoria o para recuperar una gestión.
Se me ocurre hacer un trigger que se dispare cuando haya un evento delete, pero no sé como hacer para que efectivamente me borre el registro pero por otro lado me lo copie tal cual a otra tabla que sería como un log de lo eliminado.
Mi tabla de gestiones sólo cuenta con los campos:
Código:
idgestion | usgestion | detalle | fecha_creacion
De momento tengo lo siguiente pero me funciona sólo en SQL Server:
Código:
CREATE TRIGGER triDeleteGestion
ON gestion
INSTEAD OF DELETE
AS
BEGIN
DECLARE @idgestion INT
DECLARE @us INT
DECLARE @detalle TEXT
DECLARE @fecha TIMESTAMP
SELECT @idgestion = (SELECT idgestion FROM DELETED)
SELECT @us = (SELECT usgestion FROM DELETED)
SELECT @detalle = (SELECT detalle FROM DELETED )
SELECT @fecha = (SELECT fecha_creacion FROM DELETED)
IF( @idgestion <> '')
BEGIN
INSERT INTO log_gestion( idgestion, usgestion, detalle, fecha_creacion )
VALUES(@idgestion, @us, @detalle, @fecha)
END
ELSE
BEGIN
RAISERROR('La gestión no existe')
END
END
Espero me puedan ayudar!