Re: Ayuda Sobre Trigger

From: Alvaro Herrera <alvherre(at)surnet(dot)cl>
To: Ariel Tavella <tavella(at)aguasgo(dot)com(dot)ar>
Cc: listapl <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda Sobre Trigger
Date: 2005-06-08 22:37:01
Message-ID: 20050608223701.GB23843@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Wed, Jun 08, 2005 at 06:17:36PM -0300, Ariel Tavella wrote:
> Hola Lista
>
> Tengo un trigger definido para una tabla el cual debe actualizar
> (UPDATE) dos campos de otra tabla. El problema es que me tira el
> siguiente error "UPDATE IS NOT ALLOWED IN A NON-VOLATILE FUNCTION",
> alguien me podria decir de que se trata y como resolverlo.

Facil, declara la funcion como volatil.

> create or replace function minmax() returns trigger as $$
> declare
> reg record;
> begin
> select into reg min(campo) as minimo, max(campo) as maximo from prueba where id = new.id;
> update tabla2 set campo1 = reg.minimo, campo2 = reg.maximo where ide = new.id;
> return null;
> end;
> $$ .........
^^^^^^^^^

Justo omitiste la parte importante.

Ahora, la verdad es que parece que tu funcion estuviera trabajando de
mas. Probablemente no necesitas hacer el select para hacer el siguiente
update. El rendimiento de eso sera muy malo.

--
Alvaro Herrera (<alvherre[a]surnet.cl>)
Y dijo Dios: "Que sea Satanás, para que la gente no me culpe de todo a mí."
"Y que hayan abogados, para que la gente no culpe de todo a Satanás"

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2005-06-08 22:39:49 Re: [OT] ¿Cuáles deberían ser las funciones de un DBA?
Previous Message Alvaro Herrera 2005-06-08 22:33:12 Re: Query sobre query