Re: TRIGGER BEFORE INSERT

Поиск
Список
Период
Сортировка
От Rafal Pietrak
Тема Re: TRIGGER BEFORE INSERT
Дата
Msg-id 1168539992.4459.37.camel@zorro.isa-geek.com
обсуждение исходный текст
Ответ на Re: TRIGGER BEFORE INSERT  (Alban Hertroys <alban@magproductions.nl>)
Ответы Re: TRIGGER BEFORE INSERT  (Martijn van Oosterhout <kleptog@svana.org>)
Re: TRIGGER BEFORE INSERT  (Adrian Klaver <aklaver@comcast.net>)
Список pgsql-general
On Thu, 2007-01-11 at 15:10 +0100, Alban Hertroys wrote:
> Rafal Pietrak wrote:
> > Hi!
> >
> > I'm re-posting this message again in hope someone would have a look at
> > the case again.   .. it's pending.
>
> You were given a solution; defer the foreign key constraint.

Well. I were, but probably I'm doing something wrong with 'deferring the
trigger'. When I put:

"SET CONSTRAINTS  ALL DEFERRED ; "

*before* the  UPDATE statement *within* the trigger function (just after
BEGIN statement there).

After doing so, notheing changes. I get the same ERROR. (all screenlogs
were included in previous posts, so I'll spare those here).

So may be "SET CONSTRAINTS  .... DEFERRED " should be used somehow
differently? I've never had any use for that construct, may be I miss
something?

> Alternatively, you may want to re-think your trigger function so that it
> does things in the right order.

I cannot see *any* way to reorder the events in the triger function. The
function is short anough 'not to allow' :) for reordering - it just
makes an UPDATE to some other table (where it puts a reference to the
'fresh ROW') and stores the result of that update in the newly created
ROW.

And the problem is, that UPDATE puts a reference to the fresh ROW and
that the UPDATE statement does NOT SEE the 'freshly created ROW' - may
be this is not a case of 'too early constraint check', but rather a
problem of 'visibility' of data (new data) within a single transaction
(an UPDATE is launched within the trigger transaction - should see
already created ROW, shouldn't it?).

N.B. All the code that does fail is in my previous posts.

But as this is the 'second round' of my 'call for help' - I get an
impression, that there may actually not be a solution. Too bad.

-R

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

Предыдущее
От: Russell Smith
Дата:
Сообщение: Re: Remove duplicate rows
Следующее
От: Martijn van Oosterhout
Дата:
Сообщение: Re: TRIGGER BEFORE INSERT