Re: loop on trigger

Поиск
Список
Период
Сортировка
От will trillich
Тема Re: loop on trigger
Дата
Msg-id 20010424145018.E30699@serensoft.com
обсуждение исходный текст
Ответ на loop on trigger  (mgermoni@uniautomation.it)
Список pgsql-general
On Wed, Apr 18, 2001 at 10:06:01PM +0200, mgermoni@uniautomation.it wrote:
> following your indication I found what I was looking for...Thank you.
>
> I made a simple trigger/function that:
> on insert check if a particular field is already on one table if not it
> will procede to make the insert otherwise not.
> But it goes on loop. Now just because I do not have experience, I'm
> wondering if it possible to do it without going in loop, because if the
> trigger is build up to get fired before the action and inside itself,
> actualy, there is again the continuos of the action it is called again
> and so on. There is a method to do without using the same table to
> do the control and then the action? In other words interception an
> insert to a specific table if the control is true to procede with the
> action itself without hitting any loop?

imo a better approach would be to create a view, and define an
insert rule that intercepts attempts to insert to that,
re-routing the data to the real table instead:

    create table _real_stuff (
    ...
    );

    create view read_only as select * from _real_stuff;

    create rule myInsert as
        on insert to read_only
        do instead
            insert into _real_stuff (fieldlist)
                values (NEW.this,NEW.that,NEW.one+NEW.two-NEW.three);

    create rule myUpdate as
        on update to read_only
        do instead
            update _real_stuff set
                field1 = NEW.field1,
                field2 = OLD.field3 - NEW.field72
            where
                primarykeyfield = NEW.primarykeyfield;

that way you won't trigger your own rule within your own rule
within your own rule within your own rule...

--
don't visit this page. it's bad for you. take my expert word for it.
http://www.salon.com/people/col/pagl/2001/03/21/spring/index1.html

will@serensoft.com
http://sourceforge.net/projects/newbiedoc -- we need your brain!
http://www.dontUthink.com/ -- your brain needs us!

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

Предыдущее
От: will trillich
Дата:
Сообщение: Re: append all columns in where-clause
Следующее
От: will trillich
Дата:
Сообщение: Re: Insert data into multiple tables