quisera que alguien me responda sobre si es posible pasarle un parametro a una funcion que dispara un trigger.
saludos.
| |||
Respuesta: triggers Cita: Hola huesoMira deseo hacer un trigger para auditar unas tablas, pero deseo que cuando se dispare el trigger llame a una función que le pase a una tabla de trazas además de las modificaciones, el usuario que las hizo (no el usuario con el que estoy conectado a la bd, sino uno php por ejemplo) algo por el estilo de esto: CREATE OR REPLACE FUNCTION "public"."function1" () RETURNS trigger AS BEGIN IF (TG_OP = 'DELETE') THEN INSERT INTO empleados_audit SELECT 'D', now(), user, OLD.*; RETURN OLD; ELSIF (TG_OP = 'UPDATE') THEN INSERT INTO empleados_audit SELECT 'U', now(), user, NEW.empleado_nombre, NEW.salario; RETURN NEW; ELSIF (TG_OP = 'INSERT') THEN INSERT INTO empleados_audit SELECT 'I', now(), user, NEW.*; RETURN NEW; END IF; RETURN NULL; END; ****************** Pero que en vez de pasarle el usuario de la bd (que accedo a su valor con user), le pueda pasar un valor para colocar en la tabla de destino ..... muchas gracias de antemano ... |
| ||||
Respuesta: triggers Que onda Yoelvis. Mira aqui te dejo algo que lei sobre los trigger es muy util y a mi me ayudo demaciado. Una de las caracteristicas de los triggers es que no le puedes enviar argumentos a la funcion y la funcion debera retornar un trigger Te dejo aqui la fuente. http://www.postgresql-es.org/node/301 Yo hice algo parecido. en la tabla donde estaras verificando las acciones agregue un campo que se llama usuario cuando hacia unaaccion sobre la misma tabla guardaba el usuario y despues ejecutaba el trigger y me traia el usuario de la old. asi lo resolvi. espero que eso te sirva o de menos te de una idea. cuidate y si lo solucionas nos dices como. |
| ||||
Respuesta: triggers En este caso te propongo algo que no me gusta mucho, pero que puede funcionarte. Y es hacer uso de rules. Es un mecanismo similar a los triggers pero que no afecta cada registro, sino un conjunto de reglas. Lo que te digo que no me gusta, es hacer un create replace de la regla cada que haya una inserción u operación DML para poder capturar el usuario que dices es el parametro. Te lo muestro en este ejemplo:
Código SQL:
Ver original En este caso, la fecha se comporta como el parámetro de entrada (Que en tu caso sería el usuario) pero ara que sea dinámico, requiere ejecutar el CREATE OR REPLACE RULE desde el lenguaje para que inserte el valor que se espera. Yo realmente optaría por añadir a cada tabla original un campo para almacenar el user y pasarselo como valor NEW u OLD al trigger y que haga la operación DML automática. EDITO: se me adelantó calakra
__________________ Without data, You are another person with an opinion. W. Edwads Deming |
| |||
Respuesta: triggers Calakra esa es la opcion que he visto mas factible puedes ponerme un ejemplo de como llamas despues al usuario en cada funcion por que lo que quiero auditar on 5 o 6 tablas importantes y a la hora de realizar la funcion solo el insert me crea las trazas bien.. Última edición por yoelvis; 13/05/2010 a las 07:15 |
| |||
Respuesta: triggers Calakra esa es la opcion que he visto mas factible puedes ponerme un ejemplo de como llamas despues al usuario en cada funcion por que lo que quiero auditar on 5 o 6 tablas importantes y a la hora de realizar la funcion solo el insert me crea las trazas bien.. |
Etiquetas: |