Re: currval() within one statement
От | Guillaume Lelarge |
---|---|
Тема | Re: currval() within one statement |
Дата | |
Msg-id | 4795C3D7.6050209@lelarge.info обсуждение исходный текст |
Ответ на | currval() within one statement (silly_sad <sad@bankir.ru>) |
Список | pgsql-sql |
sad wrote: > Guillaume Lelarge wrote: >> sad wrote: >>> A. Kretschmer wrote: >>> >>>>> is it expected that the currval() changes its value between calls >>>>> within one statement ? >>> >>>> Conclusion, don't call nextval() within a TRIGGER, and insert either >>>> nextval() for the column or omit this column. >>> >>> I only note that i still want to discuss the titled problem or to be >>> given an exact pointer to documentation regarding the currval() behavior >>> in the described situation, that i had. >>> >> >> Well, your situation is weird, to say the least. currval() doesn't >> change the value of a sequence. Adding a trigger that calls nextval() >> will change the value. But you're not telling us which kind of >> trigger... per statement or for each row ? if it's for each row, then >> that's quite understandable. > > my fault -- i forgot to say. > The trigger is "for each row". > > It is understandable, i agree, but it is surprising -- alternative > behavior (constant result off currval()) is understandable too. > It isn't surprising. A "for each row" trigger will execute the trigger function for each individual row, which will executes nextval each time... so each currval will get a different value. -- Guillaume. http://www.postgresqlfr.org http://dalibo.com
В списке pgsql-sql по дате отправления: