utiliza el disparador en modo for each row before update, para que te ejecute la sentencia antes que actualices el registro, entonces con OLD obtienes el atributo de la tabla antes de modificar y con NEW el nuevo valor.
Aqui te pongo un ejemplo para que puedas realizar lo que necesitas: CREATE TABLE "public"."nuevo" ( "id" SERIAL, "nombre" VARCHAR(20), CONSTRAINT "nuevo_pkey" PRIMARY KEY("id") ) WITH OIDS; CREATE TABLE "public"."historico" ( "id" SERIAL, "nombre_viejo" VARCHAR(20), "nombre_nuevo" VARCHAR, CONSTRAINT "historico_pkey" PRIMARY KEY("id") ) WITH OIDS; CREATE OR REPLACE FUNCTION "public"."funAntesUpdate" ( ) RETURNS trigger AS $body$ DECLARE BEGIN INSERT INTO historico(nombre_viejo, nombre_nuevo) VALUES(OLD.nombre, NEW.nombre); RETURN NEW; END; $body$ LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER COST 100; CREATE TRIGGER "trigger1" BEFORE UPDATE ON "public"."nuevo" FOR EACH ROW EXECUTE PROCEDURE "public"."funAntesUpdate"(); Para mas información puedes consultar la siguiente direccion: http://www.postgresql.org.es/node/301 Saludos. ________________________________________ De: pgsql-es-ayuda-ow...@postgresql.org [pgsql-es-ayuda-ow...@postgresql.org] En nombre de Gaston Rider [gastonri...@hotmail.com] Enviado el: jueves, 02 de junio de 2011 9:12 Para: Postgres Lista Asunto: [pgsql-es-ayuda] Trigger ayuda con funcion Hola. Necesitarìa ayuda con una funcion... disparador en update. necesito guardar en una tabla xxxx los campos que fueron modificados en la tabla que disaparò el trigger.. en principio necesitaria la manera de recorrer "los campos" de la tabla en cuestion, compararlos con los valores nuevos, y en el caso de que el valor se modificó... guardar esto... no sè si se entiende??? muchas gracias - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda