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

Mysql triggers

Estas en el tema de Mysql triggers en el foro de Mysql en Foros del Web. Hola como estan, tengo una consulta, espero que me puedan ayudar Estoy creando unos triggers para la auditoria de tablas en MYSQL… E creado 3 ...
  #1 (permalink)  
Antiguo 22/12/2010, 17:52
 
Fecha de Ingreso: agosto-2010
Mensajes: 8
Antigüedad: 13 años, 8 meses
Puntos: 0
Mysql triggers

Hola como estan, tengo una consulta, espero que me puedan ayudar

Estoy creando unos triggers para la auditoria de tablas en MYSQL…

E creado 3 TRIGGER para cada evento (insert, delete, update) , aquí guardo lo que ocurre en mi tabla (ejm.): clientes

Mi consulta es:

Tengo 5 tablas en mi BD, necesitó crear 3 triggers tablas auditoras(insert, update, delete) por cada tabla que tenga???

5 tablas es un ejemplo ya que mi BD tiene 60 tablas, lo que evito es crear 3 tablas más por cada tabla maestra que tengo… es decir 180 tablas….

He pensado en crear un trigger general por cada evento (trigger-general-insert, trigger-general-delete, trigger-general-update) y filtrar los resultados con un combobox en mi app.

Nota: las estructuras de las 60 tablas son diferentes.

Este es mi código por cada evento que tengo: con esto me parece que tendría que crear las 180 tablas que les mencione arriba.

CASO 1:
CREATE TRIGGER trigger_auditoria_clientes_insert AFTER INSERT ON clientes
FOR EACH ROW
INSERT INTO auditoria_clientes_insert(nombre, anterior_seccion, usuario, modificado )
VALUES (OLD.nombre, OLD.seccion, CURRENT_USER(), NOW() );


CREATE TRIGGER trigger_auditoria_clientes_update AFTER UPDATE ON clientes
FOR EACH ROW
INSERT INTO auditoria_clientes(name, anterior_seccion, usuario, modificado )
VALUES (OLD.nombre, OLD.seccion, CURRENT_USER(), NOW() );


Para evitar esto, se me ocurrió implementar un script más o menos así: esto por app

CASO 2:
CREATE TRIGGER trigger_auditoria_clientes_insert
if($tabla==clientes ) {
AFTER INSERT ON clients
FOR EACH ROW
INSERT INTO auditoria_total_insert(nombre, anterior_seccion, usuario, modificado )
VALUES (OLD.nombre, OLD.seccion, CURRENT_USER(), NOW() );
}
Else
if($tabla==jobs )
AFTER INSERT ON jobs FOR EACH ROW
INSERT INTO auditoria_total_insert(job, description, usuario, modificado )
VALUES (OLD. job, OLD. description, CURRENT_USER(), NOW() );


La estructura de mis tablas son diferentes, en mi INSERT e colocado como ejemplo campos referenciales de las tablas maestras.

Entonces en mi condicional yo pregunto si el tipo de tabla es jobs o cliente, para cambiar mi insert, update, delete

Se puede???, no se puede???, de qué forma se puede???, está bien mi sintaxis???, esta mal mi sintaxis pero se puede???

CASO 1 ya probé con éxito, pero lo que evito es crear 3 triggers por cada tabla.

Espero que me puedan ayudar :)

Saludos
Anthony G.
  #2 (permalink)  
Antiguo 23/12/2010, 07:44
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Mysql triggers

creo que en mysql no se puede.

No recuerdo donde leí que ya estaban trabajndo en la solución de este inconveniente.

Por ahora, debes hacer 3 triggers.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: auditoria-tables, mysql-triggers, trigger
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:59.