Trigers cuando se modifica más de 1 tabla

Espero puedan ayudarme.
Mi problema es que tengo una aplicación en la cual se manejan 2 tablas. Quiero registrar en una bitácora todos los cambios que le haga el usuario a la información, ya sea inserción, actualización o borrado. Busco información sobre trigger en la bd pero todos manejan una tabla por ejemplo los trigger before insert pero ¿cómo le hago para que al momento de que hagan un update por ejemplo el trigger disparado me guarde la información de las dos tablas al mismo tiempo?

1 Respuesta

Respuesta
1
Puedes utilizar 2 triggers uno para cada tabla.
También tienes los triggers instead que pueden dispararse ante eventos de vistas.
No se si he entendido tu problema.
Hola, gracias por el comentario de los trigger instead, pero aun tengo dudas. Voy a volver a explicar mi problema: tengo una forma (en Forms 6i) en la cual despliego información de VARIAS TABLAS. Van a poner a una persona a validar la información. Si realiza algún cambio dentro de esa forma, hay que grabar ese cambio en una tabla bitácora, ademas de identificar si fue un insert, un update o un delete. Tengo que guardar el NOMBRE DE LA TABLA, EL NOMBRE DEL CAMPO que modificó y la información que tenia y la que tendrá ahora. He estado leyendo sobre los instead, pero como mencionan que trabajan sobre vistas, ya me confundí.
Espero sus comentarios.
Gracias.
Para grabar los valores que tenía y que tendrá necesitas utilizar las variables :old y :new que en los triggers insted creo que no se pueden utilizar.
¿Cuándo mdificas la información de una tabla tienes que guardar en el bitácora la información de todas las tablas de la forma?
Con los triggers de base de datos, no triggers de forms, solo puedes tratar los datos :old y :new de las tablas que disparan el evento.
Con respecto a la pregunta que me haces, de guardar en la bitácora la información de todas las tablas de la forma; en realidad tengo que GUARDAR SOLO LA INFORMACIÓN DEL ANTES Y DEL DESPUÉS DE SOLO EL CAMPO QUE SE MODIFICO. Por ejemplo si tengo nombre, dirección, teléfono en una tabla y en otra: categoría, puesto, antigüedad y sueldo ( claro esta que todo aparece en una forma) y mi usuario modifica solo el teléfono y el puesto, al momento de grabar en la bitácora, necesito guardar, nombre de la tabla1: campo: teléfono, valor_anterior:, valor:actual y el nombre de la tabla2, campo puesto, valor_anterior, valor_actual; Ahí es donde me confundo, ¿cómo decirle en el trigger cual campo es el sufrió el cambio y de que tabla?
Saludos.- Espero haber sido un poco más clara...
Tendrás que comparar todos los valores nuevos y viejos de los campos de las tablas que disparan el trigger.
:Old. Nombre es diferente a :new. Nombre es que ese campo ha cambiado, en el valor del campo tendrás que poner que se modifica el campo nombre, que el valor anterior es :old. Nombre y el nuevo es :new. Nombre. Así con todo los campos de la tabla.
Agradezco muchísimo tus comentarios y el tiempo invertido en mi pregunta.
Muchísimas gracias, y que bueno que hay páginas como estas para poder apoyarnos los programadores ... GRACIAS !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas