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...<br><br>Ahora creo que en MYSQL 5 manejas procedimientos almacenados ve en esta pagina (
<a href="http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems">http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems</a>) comparaciones de bd datos<br><br>y con resepcto a la logica que encontre en microsoft es esta la pagina que te puede ayudar. (
<a href="http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art168.asp">http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art168.asp</a> )<br><br>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....
<br>Espero que sea de tu ayuda y nos vemos pronto <br><br><div><span class="gmail_quote">2006/11/11, Rodrigo Fuentealba <<a href="mailto:darkprox@gmail.com">darkprox@gmail.com</a>>:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
2006/11/10, Carlos Barbiero <<a href="mailto:carlosbarbiero@gmail.com">carlosbarbiero@gmail.com</a>>:<br>> Estimados,<br>><br>> Estamos desarrollando un sistema con php y mysql (sin comentarios<br>> Rodrigo por favor ;-p )
<br><br>tranquilo, no diré que MySQL puaj...!<br><br>> en el que necesitamos auditar ciertas tablas,<br>> es decir, registrar las modificaciones, quien las hizo, fecha, hora,<br>> valor anterior del registro antes de la modificacion, maquina donde se
<br>> hizo, etc etc. Quisiera saber si alguien tiene experiencia en el rubro<br>> utilizando XML (o algun otro método/herramienta), es decir poder<br>> registrar lo anterior sin tener que duplicar las tablas en la base de
<br>> datos.<br><br>Mira, no sé si MySQL tiene vistas y procedimientos almacenados, yo<br>haría algo así porque aunque no es lo más común, sirve para mantener<br>los datos.<br><br>Supongamos que tenemos la siguiente tabla.
<br><br>TABLA CLIENTES:<br>- codigo<br>- nombre<br>- direccion<br>- ciudad<br>- telefono<br><br>Para crear una auditoría sobre dicha tabla, haría lo siguiente (para<br>"no" duplicar las tablas, claro está, y crear dentro de la base la
<br>lógica necesaria):<br><br>TABLA REAL_CLIENTES:<br>- codigo<br>- nombre<br>- direccion<br>- ciudad<br>- telefono<br>- oculto_borrado<br>- oculto_fechacreacion<br>- oculto_creadopor<br>- oculto_fechamodificacion<br>- oculto_modificadopor
<br>- old_nombre<br>- old_direccion<br>- old_ciudad<br>- old_telefono<br>- old_fechacreacion<br>- old_creadopor<br>- old_fechamodificacion<br>- old_modificadopor<br><br>Con estos campos, hay que crear la vista:<br><br>VISTA CLIENTES AS
<br>select codigo, nombre, direccion, ciudad, telefono from real_clientes<br>where oculto_borrado = false;<br><br>La regla, que en PostgreSQL sería algo como esto... ¿hay equivalente en MySQL?<br><br>CREATE RULE tabla_clientes_borrado AS
<br> ON DELETE TO CLIENTES<br> DO INSTEAD<br> UPDATE real_clientes<br> SET oculto_bloqueado = true<br> WHERE codigo = old.codigo;<br><br>CREATE RULE tabla_clientes_insercion AS<br>
ON INSERT TO CLIENTES<br> DO INSTEAD<br> INSERT INTO real_clientes<br> (codigo, nombre, direccion, ciudad,<br> oculto_bloqueado, oculto_fechacreacion, oculto_creadopor)<br> VALUES
<br> (new.codigo, new.nombre, new.direccion, new.telefono,<br> false, current_date, id_usuario)<br><br>Y un par de procedimientos más (rules, functions) para el update.<br>Desconozco cómo recuperar el ID del usuario en MySQL, si es que usas
<br>muchos usuarios de la base de datos en vez de uno como es común.<br><br>La idea es que se modifique de tal forma la base de datos, para que<br>los usuarios trabajen sobre las vistas con los nombres de las tablas<br>del modelo, y procedimientos internos de la base de datos generen el
<br>resto de la información de la auditoría, sin "ensuciar" el código de<br>las aplicaciones que consumirán el cuento.<br><br>--<br>Rodrigo Fuentealba Cartes<br>Desarrollador de Sistemas Web<br>Registered User 387639 -
<a href="http://counter.li.org">http://counter.li.org</a><br><br></blockquote></div><br><br clear="all"><br>-- <br>Javier Calderón.<br>Ing. Ejec. Informatica