Re: Double sequence increase on single insert with RULE on

Поиск
Список
Период
Сортировка
Искать
От
Sarunas Krisciukaitis
Тема
Re: Double sequence increase on single insert with RULE on
Дата
Msg-id
437C3B31.30001@lonus-tech.com
Ответ на
Список
Дерево обсуждения
Double sequence increase on single insert with RULE on targeted table Sarunas Krisciukaitis <sarunask@lonus-tech.com>
Re: Double sequence increase on single insert with RULE on targeted table tomas@tuxteam.de (Tomas Zerolo)
Re: Double sequence increase on single insert with RULE on targeted table Michael Fuhr <mike@fuhr.org>
Re: Double sequence increase on single insert with RULE on targeted table tomas@tuxteam.de (Tomas Zerolo)
Re: Double sequence increase on single insert with RULE on Sarunas Krisciukaitis <sarunask@lonus-tech.com>
Re: Double sequence increase on single insert with RULE on targeted table Michael Fuhr <mike@fuhr.org>
Re: Double sequence increase on single insert with RULE on Sarunas Krisciukaitis <sarunask@lonus-tech.com>
Re: Double sequence increase on single insert with RULE on "Jim C. Nasby" <jnasby@pervasive.com>
Ok :) Then I found the solution in this partical case:
CREATE RULE test1_on_insert AS ON INSERT TO test1 DO INSERT INTO 
test_log1 (qid) VALUES ( (SELECT lastval()) );
With this rule all inserts are working as expected :)

Thank you for you advise :)

Sarunas

Michael Fuhr wrote:

>On Wed, Nov 16, 2005 at 10:31:10AM +0200, Sarunas Krisciukaitis wrote:
>  
>
>>I understand that RULES are like macros.
>>Strangest thing here is that INSERT to test1 will touch only one 
>>sequence: test1_id_seq.
>>And it increments test1_id_seq twice during insert with RULE.
>>    
>>
>
>Yes, that's a well-known effect of rewriting a query that includes
>a call to nextval().  NEW.id in the rule doesn't refer to the value
>that's inserted, but rather to the expression that's evaluated to
>get that value.  Since you didn't provide a value for id it gets
>the default: nextval('test1_id_seq').  That expression is used in
>both inserts, so the sequence gets incremented twice.  See the
>archives for numerous past discussions of this behavior.
>
>  
>
В списке pgsql-bugs по дате отправления
От: Acure
Дата:
Сообщение: BUG #2048: initdb hang up
От: Tom Lane
Дата:
FAQ