SoloCodigo

Bases de Datos => SQL Server => Mensaje iniciado por: jodijo5 en Domingo 13 de Mayo de 2007, 18:11

Título: Modificacion De Tablas
Publicado por: jodijo5 en Domingo 13 de Mayo de 2007, 18:11
hola amigos, tengo una duda, una vez< escuche a un docente comentar que la empresa SAP tenia un metodo para darse cuenta si una tabla habia sido modificada desde el mismo administrador de bases de datos o habia sido modificada a traves de las APIs que la empresa les proporcionaba, en el primer caso, si sucedia esto, el cliente perdia la garantia de su sistema, pero en el segundo caso, no habia problema, este mismo sistema quiero implementarlo con mis programas pero no se como hacerlo, halguien save como darse cuenta de esto?

gracias de antemano por su ayuda
Título: Re: Modificacion De Tablas
Publicado por: Mollense en Domingo 13 de Mayo de 2007, 20:23
Me parece que en este caso, podrías crear una tabla de auditoría y actualizarla mediante triggers. Voy a investigar un poco y vuelvo :D
Título: Re: Modificacion De Tablas
Publicado por: ElNapster en Lunes 14 de Mayo de 2007, 19:34
Pues tendrias que auditar tooooooooooooodos los insert,delete,update que se les haga a ciertas tablas de tu bd... a menudo a este proceso se le le llama BITACORA .. y para ver todo lo sucedido lo podras ver... y como dice Angel_k_ido lo puedes hacer desde un Trigger que se dispare y que guarde la informacion en la tabla de la bitacora..

 ;)
Título: Re: Modificacion De Tablas
Publicado por: jodijo5 en Lunes 21 de Mayo de 2007, 01:52
pues mis amigos, esa soluciones solo darian resultado para saber si se ah modificado la tabla, pero no se sabria si fue directamente desde la base de datos o si fue desde el sistema implementado, eso es justamente lo que me interesa
Título: Re: Modificacion De Tablas
Publicado por: Mollense en Lunes 21 de Mayo de 2007, 07:08
Yo estoy usando algo parecido a esto (Es en MySQL):
Código: Text
  1. DELIMITER &#036;&#036;;
  2.  
  3. DROP TRIGGER &#96;remiseria&#96;.&#96;trigger_audit_choferes&#96;&#036;&#036;
  4.  
  5. create trigger trigger_audit_choferes AFTER UPDATE on chofer
  6. for each row BEGIN
  7. INSERT INTO audit_choferes(fecha,usuario,accion) VALUES (NOW(), SYSTEM_USER(), &#34;UPDATE&#34;);
  8. END;
  9. &#036;&#036;
  10.  
  11. DELIMITER&#59;&#036;&#036;
  12.  
con lo que obtengo algo como esto:
(http://img161.imageshack.us/img161/7702/dibujoah3.png)

De acuerdo a como se haya conectado el usuario a la DB.

También podría guardar el número de IP.

PD: No estoy muy seguro pero me parece que en SQL Server existía una función que retornaba el nombre de la aplicación (APP_NAME) desde la que se ejecutaba la consulta pero no he encontrado nada parecido en MySQL para poder probarlo ya que es el único motor que tengo en mi máquina.-

Un saludo
Título: Re: Modificacion De Tablas
Publicado por: jodijo5 en Martes 22 de Mayo de 2007, 15:36
gracias copachay, con tu ayuda pude hacerlo, aunque no con mySQL sino con SQLserver, con esa idea que me diste sobre app_name ya lo resolvi. :comp:
Título: Re: Modificacion De Tablas
Publicado por: Mollense en Martes 22 de Mayo de 2007, 17:52
Cita de: "jodijo5"
gracias copachay, con tu ayuda pude hacerlo, aunque no con mySQL sino con SQLserver, con esa idea que me diste sobre app_name ya lo resolvi. :comp:
Por nada :beer:
Título: Re: Modificacion De Tablas
Publicado por: lencho en Miércoles 30 de Mayo de 2007, 01:44
en el trigger que coloco angel, hay un AFTER UPDATE,  que supongo que significa que el trigger se ejecutara despues de realizar un update en la tabla mencionada.

eso es en MySQL, y lo equivalente en SQL Server ???

no saben si existiese tambien un BEFORE ??, para que se ejecute antes de realizar la operacion sobre la tabla.
He visto que esto hay en Oracle, pero no lo encuentro para sql Server.

utilizo sql 2000

BYTE.
Título: Re: Modificacion De Tablas
Publicado por: jodijo5 en Miércoles 30 de Mayo de 2007, 03:54
para que el trigger se ejecute despues de actualizar se pone "after update", para que se ejecute antes se pone "for update"

Create Trigger for Update (http://msdn.microsoft.com/library/spa/default.asp?url=/library/SPA/fox7help/html/lngcreate_trigger.asp)