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

Re[2]: mi primer trigger

From: Ever Daniel Barreto Rojas <ebarreto(at)nexusit(dot)com(dot)py>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re[2]: mi primer trigger
Date: 2007-10-16 21:07:43
Message-ID: 1638595755.20071016170743@nexusit.com.py (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
alvaro:

El 16/10/2007 a las 03:46 p.m., escribiste:
>> El 16/10/2007 a las 02:36 p.m., escribiste:
>> > CREATE OR REPLACE FUNCTION "public"."salida_hilos" () RETURNS trigger AS
>> > $body$
>> > BEGIN
>> >      update vihilos2 set peso_salida = peso_salida + new.peso_neto
>> >      where idvihilo = new.idvihilo And itemvi = new.itemvi;
>> > RETURN NULL;
>> > END;
>> > $body$
>> > LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
>> 
>>    digo yo... no deberías de hacer RETURN NEW en vez de RETURN NULL?
> No, porque es un trigger AFTER.  En un trigger AFTER, el valor de
> retorno es ignorado (a diferencia de un trigger BEFORE, en el cual el
> valor de retorno es la tupla que se insertará en la tabla, en el caso de
> un trigger BEFORE INSERT).

   estás en lo cierto... creo que no atendí si era un trigger AFTER o
   BEFORE... (aunque ignoraba que en el AFTER el retorno es ignorado)
   
> Sin embargo ese es precisamente el problema del trigger.  En vez de un
> trigger AFTER, deberia estar usando un trigger BEFORE.  Y en vez de
> hacer un UPDATE, deberia estar modificando NEW.  O sea algo asi como
> NEW.peso_salida = NEW.peso_salida + NEW.peso_neto;
> RETURN NEW;

   chanchada mía... ahora que describiste esto me doy cuenta de que en
   realidad está tratando de hacerlo en la misma tabla (eso pasa
   cuando uno se apura en contestar)

   pero también, está haciendo mal su trigger, ya que en su mail dice
   que lo que desea es que al insertar un nuevo registro en vehilos2,
   aumentar el peso en el campo peso_salida de _la tabla vihilos_, en
   cuyo caso, el update debería de hacerlo en la tabla vihilos y no
   vihilos2... (o yo me mareé y entendí todo mal)...

Cordiales saludos,

-------------------
Ever Daniel Barreto Rojas
e.mail: ebarreto(at)nexusit(dot)com(dot)py :: Nexus Information Technologies
web: www.nexusit.com.py
16/10/2007 04:59 p.m.

---------------------
Always try to be modest and be proud of it!
 - For those who take life too seriously
---------------------


In response to

Responses

pgsql-es-ayuda by date

Next:From: Ever Daniel Barreto RojasDate: 2007-10-16 21:10:10
Subject: Re[2]: mi primer trigger
Previous:From: Alvaro HerreraDate: 2007-10-16 19:46:03
Subject: Re: mi primer trigger

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