From: | Juanky Moral <juanky(dot)moral(at)gmail(dot)com> |
---|---|
To: | msotocl(at)gmail(dot)com |
Cc: | Lista postgreslq Postgresql <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: trigger de auditoria |
Date: | 2005-09-20 15:38:12 |
Message-ID: | 463a53a405092008384a5f301c@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
No es el FOR lo que te falla: te falta el END LOOP.
LOOP
statements
END LOOP;
El 20/09/05, Mario Soto Cordones - Venezuela<msotocl(at)gmail(dot)com> escribió:
> Hola Lista
>
> tengo un trigger que me gatilla la siguiente funcion,
>
> CREATE OR REPLACE FUNCTION auditorias.ausubgrupo () RETURNS TRIGGER
> AS '
> DECLARE
> CONSULTA varchar;
> fecha timestamp;
> tipo varchar;
> cols record;
> usuario varchar;
> id integer;
> pid integer;
> columna varchar;
> BEGIN
> select into fecha current_timestamp(0);
> select into usuario inet_client_addr();
> select into pid pg_backend_pid();
>
> IF TG_OP = ''INSERT'' THEN
> tipo:=''A'';
> select into id new.oid;
> END IF;
> IF TG_OP = ''UPDATE'' THEN
> tipo:=''M'';
> select into id old.oid;
> END IF;
>
> FOR cols IN select attname as nombre, attnum as numero from pg_attribute
> where attrelid = TG_RELID
> and NOT attisdropped
> and attnum > 0
> LOOP
>
> IF NEW. || cols.nombre || <> OLD. || cols.nombre || THEN
> CONSULTA := ''INSERT INTO auditorias.audit
> values (1 ,'' || quote_literal(tipo)
> || '','' || quote_literal(fecha)
> || '','' || quote_literal(usuario)
> || '','' || quote_literal(TG_RELNAME)
> || '','' || id
> || '','' || quote_literal(cols.nombre)
> || '','' || quote_literal(cols.nombre)
> || '','' || quote_literal(cols.nombre)
> || '','' || pid
> || '')'';
>
> EXECUTE CONSULTA;
> END IF;
>
>
> RETURN NEW;
>
>
> END;
> '
>
> LANGUAGE plpgsql;
>
> Esta funcion es una adaptacion de una que santiago c. envio alguna vez
> a la lista, pero al ejecutar la sentencia que me gatilla esta, me
> arroja un error indicando la linea del ciclo for, pero el for esta
> bien.
>
> Lo quie quiero es colocar en un record las columnas de la tabla que
> me gatilla el trigguer para que dinamicamente el vea que columna es la
> que esta siendo modificada y asi se registre el evento
>
>
>
> Saludos
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
>
> http://archives.postgresql.org/pgsql-es-ayuda
>
--
Juanky Moral - www.juancarlosmoral.es
"Tendré que moverme más rápido: el horizonte brilla eléctrico."
(Horizonte Eléctrico - Los Deltonos )
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2005-09-20 16:08:02 | Re: existe conexion pero no veo las db/schemas en el pgadmin |
Previous Message | Mario Soto Cordones - Venezuela | 2005-09-20 15:30:56 | Re: fotografías |