Re: trigger: NEW/OLD-error or nothing happens

Поиск
Список
Период
Сортировка
От Jan Wieck
Тема Re: trigger: NEW/OLD-error or nothing happens
Дата
Msg-id 200107091352.f69DqCp07285@jupiter.us.greatbridge.com
обсуждение исходный текст
Ответ на Re: trigger: NEW/OLD-error or nothing happens  (Knut Suebert <knut.suebert@web.de>)
Ответы Re: trigger: NEW/OLD-error or nothing happens
Список pgsql-general
Knut Suebert wrote:
> Joe Conway schrieb:
>
> > OLD does not make sense on an insert because there is no "OLD" data for a
> > brand new row. Similarly, there is no "NEW" data during a delete. See
> > http://www.postgresql.org/idocs/index.php?plpgsql-trigger.html
>
> Makes sense, thanks. And at the bottom of that page is a nice hint
> regarding the trigger BEFORE/AFTER insert.
>
> So I changed to BEFORE -- but still nothing happens
>
> An exception for debugging:
>
>    create function nac_viceversa() returns opaque as'
>    declare
>         x int4;
>    begin
>         x := nacmin(NEW.sport,NEW.dport)
>         NEW.minport := x;
>         NEW.maxport := nacmax(NEW.sport,NEW.dport);
>         raise exception ''%'',x;
>    return NEW;
>    end;
>    'language 'plpgsql';
>
>    create trigger nac_update before insert or update on traf
>    for each row execute procedure nac_viceversa();
>
> the calculation works...
>
>    ERROR:  110
>    ERROR:  110
>    ERROR:  110
>
> ... but is not written into the row -- even after removing the exception ;-)
>
>     id   | ... | device | minport | maxport
>    12151 | ... | eth0   |         |
>    12152 | ... | eth0   |         |
>
> Am I stupid?

    You  can use RAISE NOTICE to have *debugging* without rolling
    back the transaction. Maybe it'd help to add more RAISE's  to
    see the values of NEW.sport and NEW.dport as well?

    And you don't need the eXtra variable. NEW.attrib should work
    well in the RAISE.


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== JanWieck@Yahoo.com #



_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


В списке pgsql-general по дате отправления:

Предыдущее
От: "Fabrizio Mazzoni"
Дата:
Сообщение: Transactions in rules..
Следующее
От: "Roderick A. Anderson"
Дата:
Сообщение: The 'C' word