Re: A problem with sequences...
| От | Tom Lane |
|---|---|
| Тема | Re: A problem with sequences... |
| Дата | |
| Msg-id | 2122.1045881201@sss.pgh.pa.us обсуждение исходный текст |
| Ответ на | Re: A problem with sequences... (Dmitry Tkach <dmitry@openratings.com>) |
| Список | pgsql-general |
Dmitry Tkach <dmitry@openratings.com> writes:
> Doug McNaught wrote:
>> I'm guessing that 'setval' is getting called more than once here.
>> Your 'LIMIT 1' controls how many rows are returned to the client, but
>> the server is probably generating more rows internally.
>>
> You are right ! That's it! It does get called twice.
> There is even a nice comment in ExecLimit():
BTW, in CVS tip ExecLimit has been rewritten to not do this, so the
query will behave as you expect in 7.4. Still, functions with
side-effects are really really dangerous in any but the simplest kind
of SELECT, because the planner is pretty cavalier about rearranging
things. I'd advise doing this instead:
select setval('answer_id_seq', (select id from answer
order by id desc limit 1));
Here, you *know* that the setval will be called exactly once.
regards, tom lane
В списке pgsql-general по дате отправления: