auditoria de tablas
javier calderon
kivurkian en gmail.com
Dom Nov 12 19:27:34 CLST 2006
Mi amigo, estube buscando cosas como para explicarte mi idea y encontre algo
en microsoft, la logica que sigue es bastante optima, ahora es menester tuyo
adaptar esta logica a tu aplicacion...
Ahora creo que en MYSQL 5 manejas procedimientos almacenados ve en esta
pagina (
http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems)
comparaciones de bd datos
y con resepcto a la logica que encontre en microsoft es esta la pagina que
te puede ayudar. (
http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art168.asp )
ahora, debes saber que como bien dice en el articulo, SQLSEVER maneja lo que
es tablas virtuales, Oracle igual lo hace, Mysql no se y en postgres creo
que ahí que utilzar la sentencia COPY (no estoy seguro de lo ultimo) Con
sqlserver y orcale lo he trabajado y funciona, con postgres no....
Espero que sea de tu ayuda y nos vemos pronto
2006/11/11, Rodrigo Fuentealba <darkprox en gmail.com>:
>
> 2006/11/10, Carlos Barbiero <carlosbarbiero en gmail.com>:
> > Estimados,
> >
> > Estamos desarrollando un sistema con php y mysql (sin comentarios
> > Rodrigo por favor ;-p )
>
> tranquilo, no diré que MySQL puaj...!
>
> > en el que necesitamos auditar ciertas tablas,
> > es decir, registrar las modificaciones, quien las hizo, fecha, hora,
> > valor anterior del registro antes de la modificacion, maquina donde se
> > hizo, etc etc. Quisiera saber si alguien tiene experiencia en el rubro
> > utilizando XML (o algun otro método/herramienta), es decir poder
> > registrar lo anterior sin tener que duplicar las tablas en la base de
> > datos.
>
> Mira, no sé si MySQL tiene vistas y procedimientos almacenados, yo
> haría algo así porque aunque no es lo más común, sirve para mantener
> los datos.
>
> Supongamos que tenemos la siguiente tabla.
>
> TABLA CLIENTES:
> - codigo
> - nombre
> - direccion
> - ciudad
> - telefono
>
> Para crear una auditoría sobre dicha tabla, haría lo siguiente (para
> "no" duplicar las tablas, claro está, y crear dentro de la base la
> lógica necesaria):
>
> TABLA REAL_CLIENTES:
> - codigo
> - nombre
> - direccion
> - ciudad
> - telefono
> - oculto_borrado
> - oculto_fechacreacion
> - oculto_creadopor
> - oculto_fechamodificacion
> - oculto_modificadopor
> - old_nombre
> - old_direccion
> - old_ciudad
> - old_telefono
> - old_fechacreacion
> - old_creadopor
> - old_fechamodificacion
> - old_modificadopor
>
> Con estos campos, hay que crear la vista:
>
> VISTA CLIENTES AS
> select codigo, nombre, direccion, ciudad, telefono from real_clientes
> where oculto_borrado = false;
>
> La regla, que en PostgreSQL sería algo como esto... ¿hay equivalente en
> MySQL?
>
> CREATE RULE tabla_clientes_borrado AS
> ON DELETE TO CLIENTES
> DO INSTEAD
> UPDATE real_clientes
> SET oculto_bloqueado = true
> WHERE codigo = old.codigo;
>
> CREATE RULE tabla_clientes_insercion AS
> ON INSERT TO CLIENTES
> DO INSTEAD
> INSERT INTO real_clientes
> (codigo, nombre, direccion, ciudad,
> oculto_bloqueado, oculto_fechacreacion, oculto_creadopor)
> VALUES
> (new.codigo, new.nombre, new.direccion, new.telefono,
> false, current_date, id_usuario)
>
> Y un par de procedimientos más (rules, functions) para el update.
> Desconozco cómo recuperar el ID del usuario en MySQL, si es que usas
> muchos usuarios de la base de datos en vez de uno como es común.
>
> La idea es que se modifique de tal forma la base de datos, para que
> los usuarios trabajen sobre las vistas con los nombres de las tablas
> del modelo, y procedimientos internos de la base de datos generen el
> resto de la información de la auditoría, sin "ensuciar" el código de
> las aplicaciones que consumirán el cuento.
>
> --
> Rodrigo Fuentealba Cartes
> Desarrollador de Sistemas Web
> Registered User 387639 - http://counter.li.org
>
>
--
Javier Calderón.
Ing. Ejec. Informatica
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20061112/e4cd2e7a/attachment.html
Más información sobre la lista de distribución PHP