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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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

Browse pgsql-es-ayuda by date

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