Re: trigger para actualización de datos con otra tabla

From: "postgres Emanuel CALVO FRANCO" <postgres(dot)arg(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: trigger para actualización de datos con otra tabla
Date: 2008-10-29 12:13:48
Message-ID: f205bb120810290513u69fa45bbj822cef0efcebbf17@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

probaste la sentencia como te la pase? si te fijas tiene un select
iniciando la sentencia....

El día 29 de octubre de 2008 6:05, Gabriel Messner
<gabmessner(at)gmail(dot)com> escribió:
> ¿podrias explicarte mejor a que te refieres a que está el FROM solito? ¿Que
> crees que debería acompañarlo? (para probarlo...). Gracias
>
> El 28 de octubre de 2008 20:05, postgres Emanuel CALVO FRANCO
> <postgres(dot)arg(at)gmail(dot)com> escribió:
>>
>> NEW.cod_pais = select paises.cod_pais
>> FROM paises
>> where (provincias.nombre_pais::text = paises.nombre_pais::text);
>>
>> no sera esto? esta el from solito....
>>
>> El día 28 de octubre de 2008 15:40, Jenaro Centeno Gómez
>> <jcenteno(at)aldia(dot)com(dot)mx> escribió:
>> > No me parece muy lógico lo que estás haciendo, no sería mejor que
>> > crearas un fk de la tabla provincias en este caso, hacia la tabla
>> > países, incluyendo solamente el campo identifiador del país en la tabla
>> > provincia ?
>> >
>> > O quizá no entendí bien, ¿ Existe algún motivo por el que necesites
>> > repetir los datos de la tabla paises en la tabla provincias?
>> >
>> > Saludos.
>> >
>> > El mar, 28-10-2008 a las 18:26 +0100, Gabriel Messner escribió:
>> >> Tengo dos tablas 'paises' y 'provincias' las dos con un campo común
>> >> 'pais'
>> >>
>> >> Necesito diseñar un trigger (lo pego abajo) que cuando inserte una
>> >> nueva tupla en la tabla 'provincias' cubra el campo 'pais' se cubra el
>> >> código de país con los datos contenidos en la tabla 'paises'.
>> >>
>> >> El problema aparece cuando inserto desde el formulario un nuevo
>> >> registro. Me devuelve un mensaje de error: Query failed: ERROR:
>> >> missing FROM-clause entry for table "provincias".
>> >>
>> >> Creo que no estoy definiendo bien la función. Cualquier ayuda será de
>> >> agradecer.
>> >>
>> >> CREATE OR REPLACE FUNCTION update_provincias RETURNS trigger AS --
>> >> trigger indica que el tipo de dato devuelto es un trigger.
>> >> $update_cdconc$
>> >> BEGIN
>> >> IF (TG_OP = 'INSERT') THEN
>> >>
>> >> NEW.cod_pais = paises.cod_pais
>> >> FROM paises
>> >> where (provincias.nombre_pais::text = paises.nombre_pais::text);
>> >> RETURN NEW;
>> >>
>> >> END IF;
>> >> IF (TG_OP = 'UPDATE') THEN
>> >> IF (OLD.nombre_pais != NEW.nombre_pais) THEN --
>> >> OLD, NEW son parámetros de la función: no tocar
>> >>
>> >> NEW.cod_pais = paises.cod_pais
>> >> FROM paises
>> >> where (provincias.nombre_pais::text = paises.nombre_pais::text);
>> >> RETURN NEW;
>> >> ELSE RETURN NEW;
>> >> END IF;
>> >> END IF;
>> >>
>> >> END;
>> >> $update_provincias$ LANGUAGE plpgsql;
>> >>
>> >> DROP TRIGGER IF EXISTS update_provincias ON provincias;
>> >>
>> >> CREATE TRIGGER update_provincias BEFORE INSERT OR UPDATE ON provincias
>> >> -- aa_plans.fichasplan: tabla sobre la que se ejecuta el trigger
>> >> FOR EACH ROW EXECUTE PROCEDURE update_provincias();
>> >> --update_centroides_geom() es la función declarada arriba
>> >
>>
>>
>>
>> --
>> Emanuel Calvo Franco
>> Syscope Postgresql DBA
>> BaPUG Member
>> --
>> TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo
>> agradecerán
>
>

--
Emanuel Calvo Franco
Syscope Postgresql DBA
BaPUG Member

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jose Alberto Sanchez Nieto 2008-10-29 12:29:48 mesajes de error a fichero y variables en cursores
Previous Message Pablo E. Siciliano 2008-10-29 11:18:23 Re: Se cachean los prototipos de las funciones deplpgsql?