log de cambios en tablas

19/11/2003 - 18:11 por Tolo | Informe spam
hola,

me gustaría hacer un log de todos los cambios en mi BD. Para ello me
gustaría montar una tabla como:

Fecha
usuario
tabla
registro
campo
valor antiguo
valor nuevo

y ahí ir añadiento campos.

Claro, pero lo que no quiero es en cada tigger de cada tabla tener que
definir:

if update(campo1)
crea_log(campo1)

if update(campo2)
crea_log(campo2)

...

if update(campon)
crea_log(campon)


alguien tiene por ahí una función más o menos standard para hacer eso de
forma automática (o sea que el sistema recorra todos los campos de la tabla,
compruebe si han dido modificados y genere el log).

gracias

Preguntas similare

Leer las respuestas

#6 Tolo
20/11/2003 - 15:59 | Informe spam
Hola,
en mis aplicaciones de fox lo tengo así y funcionaba bién, pero ahora quiero
pasar esta lógica al sql server.

Vamos a ver, mi idea es tener una tabla de log en la cual guarde todos los
cambios en las tablas.

En fox ya lo hice, y tenia una tabla donde se guardaba: fecha, usuario,
tipo_modificacion (alta, baja o modif), tabla, y datos. Los datos los tenía
como un campo memo, en el cual iba concatenando los contenidos de todos los
campos, separados por un salto de línea.

Pues bién, como os podeis imaginar, loq ue no hacía era cada vez q creaba, o
modificaba una tabla ir a modificar la función de log, sino que tenía un
procedimiento standard, q lo llamaba desde los triggers y este procedimiento
ya se encargaba de obtener todos los campos de esta tabla y con ello me
creaba el registro de log. De cara a optimizar la aplicación tenía una tabla
con un campo lógico para cada tabla, donde indicaba si de esa tabla quería o
no hacer log, y así controlaba el tamaño de la tabla log.

estoy buscando algo similiar.

gracias


"Miguel Egea" escribió en el mensaje
news:
Puedes poner trazas en el servidor que registren esos movimientos, aunque


yo
no creo que sea buena idea lo que propones, a pocos datos que tenga tu
sistema esta tabla medirá tanto que será inmanejable.

Saludos
miguel Egea
" Tolo" escribió en el mensaje
news:
> hola, bién, pero precisamente lo que quiero evitar son los casos
> particulares de cada campo, evitar poner precio_unitario en el select y
que
> funcione para cualquier cmapo, sin tener que modificar la función de
log...
>
>
> "Accotto Maximiliano D." escribió


en
el
> mensaje news:
> > Tolo!! alguna comparacion vas a tener q hacer si?
> >
> > has probado hacer en tu insert con select incorporado
> > q une la tabla inserted y la tabla de donde queres auditar y hacer un
> > compare de campos
> >
> > ej:
> >
> > insert into auditoria (fecha,usuario,precio_unitario)
> > select getdate(),suser_sname(),tabla.precio_unitario from
> > tabla inner join inserted on tabla.id = inserted.id (por donde unimos)
> > where inserted.precio_unitario <> tabla.precio_unitario
> >
> > y asi con los demas campos?
> >
> > como lo ves?
> >
> >
> >
> >
> >
> >
> > Maximiliano Damian Accotto
> > " Tolo" escribió en el mensaje
> > news:ewBow$
> > > hola,
> > >
> > > me gustaría hacer un log de todos los cambios en mi BD. Para ello me
> > > gustaría montar una tabla como:
> > >
> > > Fecha
> > > usuario
> > > tabla
> > > registro
> > > campo
> > > valor antiguo
> > > valor nuevo
> > >
> > > y ahí ir añadiento campos.
> > >
> > > Claro, pero lo que no quiero es en cada tigger de cada tabla tener


que
> > > definir:
> > >
> > > if update(campo1)
> > > crea_log(campo1)
> > >
> > > if update(campo2)
> > > crea_log(campo2)
> > >
> > > ...
> > >
> > > if update(campon)
> > > crea_log(campon)
> > >
> > >
> > > alguien tiene por ahí una función más o menos standard para hacer


eso
de
> > > forma automática (o sea que el sistema recorra todos los campos de


la
> > tabla,
> > > compruebe si han dido modificados y genere el log).
> > >
> > > gracias
> > >
> > >
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida