Re[3]: [HACKERS] SERIAL data type - Mailing list pgsql-hackers

From Sferacarta Software
Subject Re[3]: [HACKERS] SERIAL data type
Date
Msg-id 11635.980916@bo.nettuno.it
Whole thread Raw
In response to Re[2]: [HACKERS] SERIAL data type  (Sferacarta Software <sferac@bo.nettuno.it>)
List pgsql-hackers
SS> sabato, 12 settembre 98, you wrote:

BGA>> t-ishii@sra.co.jp (Tatsuo Ishii) writes:
>>> A few questions for new SERIAL data type:
>>>               [...]
>>> o explicit insertion to the serial column sets the value specified.
>>>   This is good. However, next implicit insertion results in that
>>>   previous value from the sequence + 1 is set.
>>>
>>>   create table t (c text, i serial);
>>>   insert into t values('a');
>>>   insert into t values('b',100);
>>>   insert into tvalues('c');
>>>   select * from t;
>>>
>>>    a   1
>>>    b    100
>>>    c    2
>>>
>>>   This seems a little bit unnatural for me. may be i of the thrid row
>>>   should be 101?

BGA>> The action above is definitely 'not right'.  It is my opinion that either:

BGA>>     1.  Explicit insertion into a serial column be dis-allowed.
BGA>>     2.  If explicit insertion is allowed, then the sequence need to be set so
BGA>>         the next implicit insertsion result in the last explicit insertion
BGA>>         value + 1 being used (i.e. 101 instead of 2 in the example above).

BGA>> Of these two options, I prefer #1.

BGA>> Also, should we be able to specify a starting value for the sequence when the
BGA>> table is created?  For example "create table t (c text, i serial(1000));" to
BGA>> set the starting value of the sequence to 1000.

I would like to remember there's another problem with sequences.
If you increment a sequence during a transaction and then the transaction
rolls back, the sequence's original value don't be restored.

            Jose'



pgsql-hackers by date:

Previous
From: The Hermit Hacker
Date:
Subject: Re: [HACKERS] crash on new system views
Next
From: Andreas Zeugswetter
Date:
Subject: AW: [HACKERS] crash on new system views