MySQL - Auditoria de Tabla

 
Vista:

Auditoria de Tabla

Publicado por Ramiro (5 intervenciones) el 04/11/2008 18:44:44
Hola a todos,

Tengo la siguiente consulta: lo que quiero hacer es crear un trigger de tabla en el que se guarden el Nombre de la Tabla, el nombre del campo modificado y el dato que contiene el campo.
El problema es que: no se como capturar el nombre de la tabla, el campo y el dato del campo modificado.

Les paso un tirggers de ejemplo:
Los datos en el Values entre comillas dobles es lo que quiero traer y guardar en la tabla Audit_Actividades. Calro esta que este triggers se encuantra en la tabla actividades como veran.

CREATE DEFINER = 'root'@'localhost' TRIGGER `actividades_after_upd_tr_new` BEFORE UPDATE ON `actividades`
FOR EACH ROW
BEGIN
INSERT INTO `AuditDB`.`Audit_Actividades` (Tabla, Usuario, Campo, Dato, Evento)
VALUES ("Nombre Tabla", CURRENT_USER, "Nombre Campo", "Dato del Campo",'U');
END;

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Auditoria de Tabla

Publicado por Emiliano (98 intervenciones) el 05/11/2008 09:06:39
Hola,si mal no me equivoco con tu pregunta con la sentencia NEW.col ( col es nombre de la columna que vas a insertar en la tabla ) obtienes el dato de la columna que efectuaste el trigger.Y bueno con NEW.col1 la otra columna y asi .

O sea el insert quedarias algo asi

INSERT INTO `AuditDB`.`Audit_Actividades` (Tabla, Usuario,Campo,Dato, Evento)
VALUES (New.tabla, CURRENT_USER, New.nombre, New.campo,'U');

Siempre y cuando la tabla 'actividades' tenga las columnas tabla,nombre,campo.

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Auditoria de Tabla

Publicado por Ramiro (5 intervenciones) el 05/11/2008 13:30:27
Emiliano,
lo que me decis esta bien ya lo e echo, pero lo que realmente busco es:
Suponemos que tengo la siguiente tabla:

Actividades --Tabla

CodActividad --Campo
Descripcion --Campo
Estado --Campo

y creo para esta tabla un triggers que tiene que guardar ciertos datos en la siguiente tabla:

AT_Audit --Tabla

TA BLA --Campo
Campo --Campo
ValordelCampo --Campo

Lo que tendria que hacer el triggers es que solo guarde en la tabla AT_Audit aquellos campos que sean modicifacos en la tabla Actividades

Ejemplo:
Si tengo ne la tabla Actividades el siguiente registro

CodActividad = 1
Descripcion = XXXXXXX XXX
Estado = U

y hago un update del regsitro y lo cambio por:

CodActividad = 1
Descripcion = Nada
Estado = U

la tabla AT_Audit deberia solo guardar los siguientes datos:

Tabla = Actividades
Campo = Descripcion
ValordelCampo = Nada

Nose si me explico bien, debo obtener el nombre de la tabla, nombre del campo, su valor y guardarlos en AT_Audit.

gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Auditoria de Tabla

Publicado por CLUSTERBIT (2 intervenciones) el 05/11/2008 17:07:55
Ramiro

espero esto te ayude un poco

CREATE TRIGGER prueba BEFORE UPDATE ON tabla_nom
FOR EACH ROW
BEGIN
if OLD.campo_1 <> NEW.campo_1 then
INSERT INTO ts_auditoria(camp_audi_1,camp_audi_2,camp_audi_3) VALUES("nom_campo","nom_tabla",OLD.campo_1,NEW.campo_2);
END if;
END;

esto es una parte del codigo ya despues se repite
es de una auditoria que estoy haciendo (esta hecha en MySQL-FRONT pero la sintaxis es casi =)

y de pasadita pido ayuda necesito extraer la ip de un usuario que modifique una tabla o un campo

esto quiero que se dirija a la tabla auditoria espero se entienda

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Auditoria de Tabla

Publicado por 7sh4rk (1 intervención) el 30/12/2008 13:39:51
Hola gente, estoy con el mismo problema; con lo que CLUSTERBIT propone, seguimos sin conocer el nombre del campo. Agradeceria si alguien conoce alguna manera de averiguarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar