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

#1 Accotto Maximiliano D.
19/11/2003 - 18:16 | Informe spam
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


Respuesta Responder a este mensaje
#2 Miguel Egea
19/11/2003 - 19:03 | Informe spam
En portalsql.com hay una colaboración de javier loria llamada bitácora que
puede ayudarte.

Comprueba si te vale.

Saludos
Miguel Egea
"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
>
>


Respuesta Responder a este mensaje
#3 Tolo
20/11/2003 - 09:15 | Informe spam
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
>
>


Respuesta Responder a este mensaje
#4 Accotto Maximiliano D.
20/11/2003 - 13:21 | Informe spam
pero si tienes una traza vas a tener q tener una tabla no?

no creo q lo q plantias sea viable, si vos queres hacerle una traza a
Articulos armate una tabla para esto (porque los campos de articulos no
seran iguales a los de Clientes por ej)

No te entiendo a donde queres llegar.

Un saludo

Maximiliano Damian Accotto
" 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
> >
> >
>
>


Respuesta Responder a este mensaje
#5 Miguel Egea
20/11/2003 - 15:29 | Informe spam
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
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida