Re: Resetting Serial Column Sequence Number

Поиск
Список
Период
Сортировка
От Shane Ambler
Тема Re: Resetting Serial Column Sequence Number
Дата
Msg-id 45309299.1060706@007Marketing.com
обсуждение исходный текст
Ответ на Re: Resetting Serial Column Sequence Number  (Andreas Kretschmer <akretschmer@spamfence.net>)
Список pgsql-general
Andreas Kretschmer wrote:
> Andreas Kretschmer <akretschmer@spamfence.net> schrieb:
>
>> Adam <adam@spatialsystems.org> schrieb:
>>
>>> I just emptied my table and I want all my new inserts to start with a
>>> 'location_id' of '1'. The table is named "locations" with a SERIAL column
>>> "location_id"

If you want to start at 1 why not
SELECT setval('locations_location_id_seq', 1);

>>> I tried the below SQL to rest the sequence ID but it's not working.  What am I
>>> doing wrong?
>>>
>>> SELECT setval('locations_location_id_seq', (SELECT max(location_id) + 1 FROM
>>> locations));
>> The table locations are empty? Yeah, select max(location_id) from an
>> empty table is NULL, not 0. And NULL+1 -> NULL. You can't set a Sequence
>> to NULL, that makes no sense.
>
> Btw, to avoid this, you can use coalesce():
> SELECT setval('locations_location_id_seq', (SELECT coalesce(max(location_id),0) + 1 FROM locations));
>
> coalesce returns the first non-null value, either the result from max()
> or the second parameter, 0.
>
>
> Andreas

В списке pgsql-general по дате отправления:

Предыдущее
От: Thomas Kellerer
Дата:
Сообщение: Re: more anti-postgresql FUD
Следующее
От: Michael Fuhr
Дата:
Сообщение: Re: time type strange behaviour