Re: sequence problem

Поиск
Список
Период
Сортировка
От Stephan Szabo
Тема Re: sequence problem
Дата
Msg-id Pine.BSF.4.21.0105211330560.58784-100000@megazone23.bigpanda.com
обсуждение исходный текст
Ответ на sequence problem  ("gabi munteanu" <gmunteanu@hotmail.com>)
Список pgsql-sql
On Mon, 21 May 2001, gabi munteanu wrote:

> I have the following problem.
> 
> I have a table [friends] and it looks like this:
>            id serial
>            name varchar(25)
>            phone varchar(15)
> After I created it tehre is also a sequence that generates me the ids
> friens_id_seq
> 
> Let's say I have 5 records.
> 
> If I remove the 3th my ids will be 1,2,4,5 and my friends_id_seq=5.
> if I remove the 5th my ids will be 1,2,4 and my friends_id_seq=5.
> 
> I want the following:
> if I remove a record my ids should always be like this:
> 
> 1,2,3,4... and not 1,2,4,5,9,...


> I made a trigger that does my friends_id_seq = max(id) after delete.

That won't help you if you remove the 3rd in a set of 5, and there are
locking issues to worry about if you have multiple transactions modifying
the table since you won't see the uncommitted rows (and reading those
wouldn't help anyway since they could rollback).

You could probably do it if you locked the table and generated the
id value (thus only allowing one transaction modification at a time
others blocking until commit or rollback) and you locked and 
renumbered after a delete (since you don't want it in a hole state
until the next is inserted).




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

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: sequence problem
Следующее
От: Sandhya Bellave
Дата:
Сообщение: Define timestamp with no timezone