Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Procedimiento almacenado para auditoria

Estas en el tema de Procedimiento almacenado para auditoria en el foro de Mysql en Foros del Web. Que tal? estoy intentando hacer una auditoria para mi aplicacion en delphi, usando como motor de db a MYSQL. Resulta que estoy buscando la forma ...
  #1 (permalink)  
Antiguo 05/05/2013, 12:15
 
Fecha de Ingreso: abril-2013
Mensajes: 3
Antigüedad: 11 años
Puntos: 0
Pregunta Procedimiento almacenado para auditoria

Que tal? estoy intentando hacer una auditoria para mi aplicacion en delphi, usando como motor de db a MYSQL.

Resulta que estoy buscando la forma de programar un script de forma tal que capture cualquier evento en mi base de dato (INSERT, UPDATE, DELETE) y poder recuperar los datos a operar en una tabla de auditoria.

Hasta el momento llegue a la conclusion que no me sirve utilizar trigger, ya que necesito capturar el ID del usuario logueado el cual realiza la accion (INSERT, UPDATE, DELETE), y ese ID lo guardo en una variable publica en mi MAIN de la aplicacion en delphi, y hasta donde yo se, los triggers solo procesan datos con los que trabaja la tabla.

Entonces, ya que uso SP para los inserts, probe realizar el siguiente script, y necesito la critica de los que verdaderamente saben (ustedes vv ) y que me digan que opinan al respecto, si conviene trabajar asi, si es factible en cuanto a velocidad de proceso, etc.

Algo para tener en cuenta, mi aplicacion es para una oficina, en la cual son no mas de 12 terminales, 5 para consultas y no mas de 5 para ABM de datos, y 2 que administren.

A continuacion les dejo mi SP

Código MySQL:
Ver original
  1. -- --------------------------------------------------------------------------------
  2. -- Routine DDL
  3. -- Note: comments before and after the routine body will not be stored by the server
  4. -- --------------------------------------------------------------------------------
  5. DELIMITER $$
  6.  
  7. CREATE DEFINER=`root`@`localhost` PROCEDURE `acta_alta`(
  8.     in p_actanum int,
  9.     in p_actaserie varchar(2),
  10.     in p_actafecha Date,
  11.     in p_actahora varchar (5),
  12.     in p_offdni int,
  13.     in p_empresaid int,
  14.     in var1 int,
  15.     in var2 int,
  16.     in var3 int,
  17.     in var4 int,
  18.     in var5 int,
  19.     in var6 int,
  20.     in var7 int,
  21.     in var8 int,
  22.     in var9 int,
  23.     in var10 int,
  24.     in p_vehicledom varchar (45),
  25.     in p_lugarid int,
  26.     in p_actanumcalle varchar (45),
  27.     in p_causanum int,
  28.     in p_causafecha date,
  29.     in p_usu int
  30.    
  31. )
  32.  
  33. /*Primer INSERT datos ACTA*/
  34.  
  35.     INSERT INTO acta (actanum, actaserie, actafecha, actahora, actanumcalle, offdni, empresa_id, vehicledom, lugar_id, causanum, causafecha)
  36.     VALUES (p_actanum, p_actaserie, p_actafecha, p_actahora, p_actanumcalle, p_offdni, p_empresaid, p_vehicledom, p_lugarid, p_causanum, p_causafecha);
  37.  
  38. /*Segundo INSERT datos INFRACCION*/
  39.  
  40.     if var1 >0 then
  41.         INSERT INTO actabreach (actanum, actaserie, breach_id)
  42.         VALUES (p_actanum, p_actaserie, var1);
  43.     end if;
  44.    
  45.     if var2 >0 then
  46.         INSERT INTO actabreach (actanum, actaserie, breach_id)
  47.         VALUES (p_actanum, p_actaserie, var2);
  48.     end if;
  49.    
  50.     if var3 >0 then
  51.         INSERT INTO actabreach (actanum, actaserie, breach_id)
  52.         VALUES (p_actanum, p_actaserie, var3);
  53.     end if;
  54.    
  55.     if var4 >0 then
  56.         INSERT INTO actabreach (actanum, actaserie, breach_id)
  57.         VALUES (p_actanum, p_actaserie, var4);
  58.     end if;
  59.    
  60.     if var5 >0 then
  61.         INSERT INTO actabreach (actanum, actaserie, breach_id)
  62.         VALUES (p_actanum, p_actaserie, var5);
  63.     end if;
  64.    
  65.     if var6 >0 then
  66.         INSERT INTO actabreach (actanum, actaserie, breach_id)
  67.         VALUES (p_actanum, p_actaserie, var6);
  68.     end if;
  69.    
  70.     if var7 >0 then
  71.         INSERT INTO actabreach (actanum, actaserie, breach_id)
  72.         VALUES (p_actanum, p_actaserie, var7);
  73.     end if;
  74.    
  75.     if var8 >0 then
  76.         INSERT INTO actabreach (actanum, actaserie, breach_id)
  77.         VALUES (p_actanum, p_actaserie, var8);
  78.     end if;
  79.    
  80.     if var9 >0 then
  81.         INSERT INTO actabreach (actanum, actaserie, breach_id)
  82.         VALUES (p_actanum, p_actaserie, var9);
  83.     end if;
  84.    
  85.     if var10 >0 then
  86.         INSERT INTO actabreach (actanum, actaserie, breach_id)
  87.         VALUES (p_actanum, p_actaserie, var10);
  88.     end if;
  89.    
  90. /*Tercer INSERT de CAUSA en tabla CAUSA*/
  91.  
  92.     INSERT INTO causa (causanum, causafecha)
  93.     VALUES (p_causanum, p_causafecha);
  94.    
  95. /*cuarto INSERT para AUDITORIA ACTA*/
  96.  
  97.     INSERT INTO audit_acta (tipoact, actanum_new, actaserie_new, actafecha_new, actahora_new, usu_id, fecha, hora)
  98.     VALUES ('I', p_actanum, p_actaserie, p_actafecha, p_actahora, p_usu, CURRENT_DATE(), CURRENT_TIME());
  99.  


La estructura de las tablas que uso son las siguientes

acta
*actanum
*actaserie
actafecha
actahora
actanumcalle
offdni
empresa_id
vehicledom
lugar_id
causanum
causafecha
resolnum
resolfecha
pago_id
fichanum


causa
*causanum
*causafecha
causaobs


actabreach
*actabreach_id (AI)
actanum
actaserie
breach_id


Agradeceria mucho su ayuda, y si este tema no corresponde en esta seccion, por favor hacerme saber asi lo cambio. Saludos y gracias

Etiquetas: almacenado, procedimiento, sesión, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 16:32.