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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Maxi
17/01/2008 - 17:08 | Informe spam
Rene, para recorrer todos los campos de una tabla va a tener que usar
cursores sobre el resultado de

select column_name from information_Schema.columns
where table_name ='sutabla'


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Rene Acevedo" escribió en el mensaje
news:
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




Respuesta Responder a este mensaje
#3 Maxi
17/01/2008 - 18:32 | Informe spam
Vas a tener que usar sql-dinamico tambien,

http://www.hayes.ch/sql/sql_dinamico.html


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Rene Acevedo" escribió en el mensaje
news:
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


Respuesta Responder a este mensaje
#4 Rene Acevedo
17/01/2008 - 20:16 | Informe spam
Gracias Maxi
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida