NEW."|| TG_ARGV[0] ||",

NEW["|| TG_ARGV[0] ||"]

NEW("|| TG_ARGV[0] ||")

De ninguna manera funciona, agradeceria si me pueden colaborar, de antemano muchas gracias.



| |||
![]() Estoy trabajando con una funcion disparadora en mi base de datos para la auditoria, deseo crear un disparador por cada tabla para llamar a esta funcion, pero deseo recorrer los campos de las variables NEW y OLD, pero no he podido hacerlo, tengo una tabla usuario con dos campos login y nombre, esos campos se los paso por parametros a la funcion osea los argumentos que envio son login,nombre, lo que deseo es traer los valores de esos campos pero de las variables NEW y OLD, estoy trabajando con plpgsql, se que con pltcl se puede, asi que creo que con plpgsql tambien, el problema es que no se como lo he intentado asi pero no funciona: NEW."|| TG_ARGV[0] ||", ![]() NEW["|| TG_ARGV[0] ||"] ![]() NEW("|| TG_ARGV[0] ||") ![]() De ninguna manera funciona, agradeceria si me pueden colaborar, de antemano muchas gracias. ![]() ![]() ![]() |
| |||
Re: TRIGGERS, NEW y OLD, disparadores postgresql Saludos... Nunca he trabajado con pltcl, más sí con plpgsql, y mis auditorías las hago por ahí... De lo tuyo, por qué no pegas al menos un pedazo de tu código? a ver si así se entiende más lo que haces....
__________________ Gracias de todas todas ----- Linux! |
| |||
![]() Necesito traer los valores de los campos de las variables NEW y OLD de la siguiente forma: Como argumento envio los nombres de los campos que quiero buscar: codigo,nombre donde codigo es el argumento1 y nombre el argumento2 ahora necesito algo como lo siguiente: DECLARE var_codigo varchar; var_nombre varchar; BEGIN var_codigo:=NEW." || TG_ARGV[0] || "; -- var_codigo= al valor del campo codigo del RECORD NEW var_nombre:=NEW." || TG_ARGV[1] || "; -- var_nombre= al valor del campo nombre del RECORD NEW Luego: INSERT INTO AUDITORIA (campo1,campo2) VALUES (var_codigo,var_nombre); RETURN NEW; END; Esto es mas o menos lo que quiero hacer; se preguntaran para que: Pues tengo + de 50 tablas y me pareceria muy largo realizar una funcion disparadora para cada tabla, asi que yo en cada tabla creo un disparador con los campos que deseo guardar y listo, esta parte es lo unico que no funciona. Agradeceria si me pueden colaborar... Muchas gracias!! ![]() ![]() ![]() |
| |||
Re: TRIGGERS, NEW y OLD, disparadores postgresql Perdón, aclaro lo que no funciona: DECLARE var_codigo varchar; var_nombre varchar; BEGIN var_codigo:=NEW." || TG_ARGV[0] || "; -- var_codigo= al valor del campo codigo del RECORD NEW ![]() var_nombre:=NEW." || TG_ARGV[1] || "; -- var_nombre= al valor del campo nombre del RECORD NEW ![]() Gracias. ![]() |
| |||
Re: TRIGGERS, NEW y OLD, disparadores postgresql Me está costando entender, pero vamos a ver... por qué no usas simplemente, NEW.TG_ARGV sin concatenar nada...
__________________ Gracias de todas todas ----- Linux! |
| |||
![]() Lo he intentado de muchas formas pero no funciona, si alguien lo sabe entonces simplemente diga como. Lo he intentado asi: NEW.TG_ARGV[0]; NEW."TG_ARGV[0]"; NEW[TG_ARGV[0]]; NEW(TG_ARGV[0]); NEW.'TG_ARGV[0]'; NEW.' || TG_ARGV[0] || '; NEW." || TG_ARGV[0] || "; Y aun no funciona ![]() Gracias de todas maneras... |
| |||
Re: TRIGGERS, NEW y OLD, disparadores postgresql ha ver si entendi tienes esto table( login, nombre) primero crea el lenguaje plpgsql crea el trigger pero por cada linea llama a una funcion (asi es mejor) por ejemplo CREATE FUNCTION proces_ejemplo() RETURNS trigger AS $TG_ejemplo$ DECLARE nombre varchar(10); BEGIN IF (TG_OP = 'INSERT') then nombre=new.nombre; ELSIF (TG_OP = 'update') then nombre=old.nombre; END IF; RETURN NEW; END; $TG_ejemplo$ LANGUAGE plpgsql; CREATE TRIGGER TG_ejemplo after INSERT OR UPDATE ON usuario FOR EACH ROW EXECUTE PROCEDURE proces_ejemplo(); la variable que declare dentro de la funcion proces_ejemplo(); puede tomar cualquier nombre, no es nesesario enviar ninguna variable estas new ni old estas se crean automaticamente al igual que la variable TG_OP espero esto te ayude sino hay nos avisa ¡que viva el software libre! |
| |||
Respuesta: Re: TRIGGERS, NEW y OLD, disparadores postgresql una pregunta.. si yo creo un trigger que se dispare luego de una insertar en una tabla xq no se inserta primero en la tabla y despues se ejecuta?.. la funcion es la siguiente: create or replace function venta () returns TRIGGER as $venta$ DECLARE local usuario%ROWTYPE; BEGIN select into local localidad from usuario where id=new.id_usuario; INSERT INTO venta VALUES(new.id_b,new.cedula,new.id_usuario,new.fech a,new.costo,local); RETURN new; END; $venta$ language 'plpgsql'; el trigger es este: create trigger venta AFTER insert on boleto for each row execute procedure venta(); mi inconveniente esta en que en la tabla venta, los primeros dos campos el id y la cedula son claves foraneas de la misma tabla boleto donde estoy aplicando el trigger.. si estoy diciendo que el trigger se dispare "AFTER insert on boleto" xq me da error de clave foranea en la tabla venta y nunk se logra insertar ni en boleto ni tampoco en venta... gracias de antemano!! espero sus respuestas y opiniones... Última edición por omarcortezc; 24/10/2010 a las 03:30 |
| |||
Respuesta: TRIGGERS, NEW y OLD, disparadores postgresql
__________________ Gracias de todas todas ----- Linux! |