Skip site navigation (1) Skip section navigation (2)

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 15:42:59
Message-ID: f205bb120810290842m3c34c877k7ac66ead6336cbb5@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
lo tenes repetido dos veces ese tipo de clausula...

si falla y si te tira un error y no es el mismo publicalo

El día 29 de octubre de 2008 13:28, Gabriel Messner
<gabmessner(at)gmail(dot)com> escribió:
> No funciona tal como comentas...
>
> El 29 de octubre de 2008 13:13, postgres Emanuel CALVO FRANCO
> <postgres(dot)arg(at)gmail(dot)com> escribió:
>>
>> 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
>> --
>> TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
>>               http://archives.postgresql.org/pgsql-es-ayuda
>
>



-- 
      Emanuel Calvo Franco
    Syscope Postgresql DBA
          BaPUG Member

In response to

pgsql-es-ayuda by date

Next:From: TechDate: 2008-10-29 17:29:41
Subject: Java. Serializar Objetos
Previous:From: Mauricio Lopez BenitezDate: 2008-10-29 15:05:22
Subject: Hey,

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group