Desencadenadores

17/01/2008 - 15:55 por Rene Acevedo | Informe spam
Amigos Tengo el siguiente desencadenador para las actualizaciones


CREATE TRIGGER UP_EvTrabajadores ON EvTrabajadores
FOR UPDATE
AS
begin

Declare @Tabla varchar(30)
Declare @Campo varchar(30)

Declare @novedad varchar(30)

Declare @Valor_Anterior varchar(255)
Declare @Valor_Nuevo varchar(255)

declare @llave char(50)

Select @Tabla = 'EvTrabajadores'

Select @novedad = 'ACTUALIZA'
If Update(id_Trabajador)
Begin
select @llave=id_Trabajador FROM deleted
set @Campo = 'id_trabajador'
Select @Valor_Anterior = id_Trabajador
From Deleted
Select @Valor_Nuevo = id_Trabajador
From inserted
if (@Valor_Anterior <> @Valor_Nuevo)
insert into
EvAuditoria(tabla,Llave,campo,vant,vact,usuario,fechahora,novedad)
values(@tabla,
@llave,@campo,@Valor_Anterior,@Valor_Nuevo,CURRENT_USER,getdate(),@novedad)
End

If Update(descripcion)
Begin
select @llave=id_centro FROM deleted
set @Campo ='descripcion'
Select @Valor_Anterior = descripcion
From Deleted
Select @Valor_Nuevo = descripcion
From inserted
if (@Valor_Anterior <> @Valor_Nuevo)
insert into
EvAuditoria(tabla,Llave,campo,vant,vact,usuario,fechahora,novedad)
values(@tabla,
@llave,@campo,@Valor_Anterior,@Valor_Nuevo,CURRENT_USER,getdate(),@novedad)
End
end

como observan para cada cambio en un campo me guarda una bitacora, pero me
pueden ayudar en como hacer para que automaticamente recorra todos los
campos de la tabla y no tenga que escribir uno a uno?

Muchas Gracias
 

Leer las respuestas

#1 Rene Acevedo
17/01/2008 - 16:39 | Informe spam
Gracias Maxi por contstar, pero en el caso de preguntar

If Update(id_Trabajador)
o
Select @Valor_Nuevo = id_Trabajador

como hago para que macrosustituir ID_TRABAJADOR gracias

Preguntas similares