Re: trigger de auditoria

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 )

In response to

Responses

Browse pgsql-es-ayuda by date

  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