Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/04/2010, 09:31
delta132
 
Fecha de Ingreso: abril-2006
Ubicación: Bogotá
Mensajes: 251
Antigüedad: 18 años, 8 meses
Puntos: 14
Trigger sobre un delete y hacer insert

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!