
22/12/2010, 17:52
|
| | Fecha de Ingreso: agosto-2010
Mensajes: 8
Antigüedad: 14 años, 7 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. |