Hola de nuevo,

Lo primero, muchas gracias por la ayuda. Espero que éste sea el último
mensaje sobre este tema... a partir de aquí trastearé solo.

El 17/07/08 00:16, Jaime Casanova escribió:
> de poder puedes, pero las reglas (RULE) en realidad son como macros
> que se expanden en linea (o al menos es una forma de explicarlo) y eso
> hace que puedan surgir problemas si una regla que se expande te agrega
> dos llamadas a la misma funcion volatil (randim(), nextval(), etc)
> cuando tu solo esperabas una...

Interesante :)

> quedaria asi:
> CREATE TRIGGER tresource_update BEFORE UPDATE ON TResource
> FOR EACH ROW EXECUTE PROCEDURE update_stamp();
[...]
> CREATE OR REPLACE FUNCTION update_stamp() returns trigger as $$
> begin
>       NEW.uploaded = current_timestamp;
> 
>       return NEW;
> end;
> $$ language plpgsql;
> 

Y si varias tablas tuviesen un atributo (cada una) que se tuviese que
comportar como el del ejemplo de arriba, ¿podría crear una trigger para
cada una del estilo,

CREATE TRIGGER tresource_update BEFORE UPDATE ON TResource
FOR EACH ROW EXECUTE PROCEDURE update_stamp(TResource.uploaded);

y luego crear una función genérica del estilo,

CREATE OR REPLACE FUNCTION update_stamp(inout fecha timestamp) returns
trigger as $$
begin
        fecha = current_timestamp;
        return NEW;
end;
$$ language plpgsql;

¿O debería crear una función distinta para cada trigger?

Gracias de nuevo.

Saludos,
  Alvaro Uría

Attachment: signature.asc
Description: OpenPGP digital signature

Responder a