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"
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 |