Re: Double sequence increase on single insert with RULE on targeted table
В списке pgsql-bugs по дате отправления:
| От | Michael Fuhr |
|---|---|
| Тема | Re: Double sequence increase on single insert with RULE on targeted table |
| Дата | |
| Msg-id | 20051116162649.GA49742@winnie.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
|
| Список | pgsql-bugs |
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.
--
Michael Fuhr
В списке pgsql-bugs по дате отправления:
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера