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&nbsp; 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 &lt;<a href="mailto:darkprox@gmail.com">darkprox@gmail.com</a>&gt;:</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 &lt;<a href="mailto:carlosbarbiero@gmail.com">carlosbarbiero@gmail.com</a>&gt;:<br>&gt; Estimados,<br>&gt;<br>&gt;&nbsp;&nbsp; Estamos desarrollando un sistema con php y mysql (sin comentarios<br>&gt; Rodrigo por favor ;-p )
<br><br>tranquilo, no diré que MySQL puaj...!<br><br>&gt; en el que necesitamos auditar ciertas tablas,<br>&gt; es decir, registrar las modificaciones, quien las hizo, fecha, hora,<br>&gt; valor anterior del registro antes de la modificacion, maquina donde se
<br>&gt; hizo, etc etc. Quisiera saber si alguien tiene experiencia en el rubro<br>&gt; utilizando XML (o algun otro método/herramienta), es decir poder<br>&gt; registrar lo anterior sin tener que duplicar las tablas en la base de
<br>&gt; 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>&quot;no&quot; 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>&nbsp;&nbsp;&nbsp;&nbsp;ON DELETE TO CLIENTES<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DO INSTEAD<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UPDATE real_clientes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SET oculto_bloqueado = true<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE codigo = old.codigo;<br><br>CREATE RULE tabla_clientes_insercion AS<br>
&nbsp;&nbsp;&nbsp;&nbsp;ON INSERT TO CLIENTES<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DO INSTEAD<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INSERT INTO real_clientes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(codigo, nombre, direccion, ciudad,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oculto_bloqueado, oculto_fechacreacion, oculto_creadopor)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VALUES
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(new.codigo, new.nombre, new.direccion, new.telefono,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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 &quot;ensuciar&quot; 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