Обсуждение: question on rules

Поиск
Список
Период
Сортировка

question on rules

От
weigelt@metux.de
Дата:
hi folks,

i'd like to write an rule which fills out some empty attrs on 
insert (w/ data from other given attrs).

the table structure is:
CREATE TABLE foo (start date, duration integer, endtime date);

and the rule is:
CREATE RULE foo1 AS ON INSERT TO foo WHERE new.endtime = NULL DO    INSERT INTO foo SELECT new.start, new.duration,
new.start+ new.duration;   
 
when i try to insert some data (INSERT INTO foo SELECT '2003-01-01', '12';)
i get the error: query rewritten 10 times, may contain cycles.

how can i avoid this loop ?

cu
-- 
---------------------------------------------------------------------Enrico Weigelt    ==   metux ITS Webhosting ab 5
EUR/Monat.         UUCP, rawIP und vieles mehr.
 
phone:     +49 36207 519931         www:       http://www.metux.de/     fax:       +49 36207 519932         email:
contact@metux.decellphone:+49 174 7066481         smsgate:   sms.weigelt@metux.de
 
---------------------------------------------------------------------Diese Mail wurde mit UUCP versandt.
http://www.metux.de/uucp/


Re: question on rules

От
Tom Lane
Дата:
weigelt@metux.de writes:
> i'd like to write an rule which fills out some empty attrs on 
> insert (w/ data from other given attrs).

You'd be better off doing this with a BEFORE INSERT trigger.
        regards, tom lane


Re: question on rules

От
Jan Wieck
Дата:
Tom Lane wrote:
> weigelt@metux.de writes:
>> i'd like to write an rule which fills out some empty attrs on 
>> insert (w/ data from other given attrs).
> 
> You'd be better off doing this with a BEFORE INSERT trigger.

The only way to do it with rules would be to create a view over the 
basetable, create an insert rule over the view and then have the 
application doing the insert into the view instead. So "better" could be 
considered an understatement :-)


Jan

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



Re: question on rules

От
Tomasz Myrta
Дата:
Dnia 2003-06-13 03:26, Uz.ytkownik weigelt@metux.de napisa?:
> hi folks,
> 
> i'd like to write an rule which fills out some empty attrs on 
> insert (w/ data from other given attrs).
> 
> the table structure is:
> CREATE TABLE foo (start date, duration integer, endtime date);
> 
> and the rule is:
> CREATE RULE foo1 AS ON INSERT TO foo WHERE new.endtime = NULL DO 
>     INSERT INTO foo SELECT new.start, new.duration, new.start + new.duration;
>     
> when i try to insert some data (INSERT INTO foo SELECT '2003-01-01', '12';)
> i get the error: query rewritten 10 times, may contain cycles.
> 
> how can i avoid this loop ?
For this case creating trigger would be much better than rule.
I think, you can't use rules this way.

Regards,
Tomasz Myrta