Serial Vs Sequence

Started by Adarsh Sharmaabout 15 years ago3 messagesgeneral
Jump to latest
#1Adarsh Sharma
adarsh.sharma@orkash.com

Dear all,

I am not able to distinct these two datatypes ( Serial and Sequence ) in
Postgresql which resembles like auto-increment in Mysql.

Which one gets priority and When ?

The only thing I am able to find is to use SERIAL because if a drop
table occurs , still SEQUENCE memory is not freed, its garbage remains.

However if we define a SERIAL column in a table , implicitly it makes a
sequence.

Could anyone Please describe me the difference and Which to Use When ?

Thanks & Regards

Adarsh Sharma

#2John R Pierce
pierce@hogranch.com
In reply to: Adarsh Sharma (#1)
Re: Serial Vs Sequence

On 01/31/11 10:55 PM, Adarsh Sharma wrote:

Dear all,

I am not able to distinct these two datatypes ( Serial and Sequence )
in Postgresql which resembles like auto-increment in Mysql.

Which one gets priority and When ?

The only thing I am able to find is to use SERIAL because if a drop
table occurs , still SEQUENCE memory is not freed, its garbage remains.

However if we define a SERIAL column in a table , implicitly it makes
a sequence.

Could anyone Please describe me the difference and Which to Use When ?

neither is actually a data type.

a sequence is a special table-like object that has auto increment logic
associated with it.

a serial is a pseudotype implemented as an integer field with an
associated sequence.

when you drop a table that has an associated sequence, the sequence is
dropped automatically.

#3Pavel Stehule
pavel.stehule@gmail.com
In reply to: Adarsh Sharma (#1)
Re: Serial Vs Sequence

Hello

SEQUENCE isn't datatype. It is a database object. Simple object, that
can to generate unique integer numbers.

SERIAL is a fictive datatype. It can create a own SEQUENCE object and
can create a reference on this object.

pavel=# create sequence aaaa;
CREATE SEQUENCE
Time: 461.883 ms
pavel=# select nextval('aaaa');
nextval
─────────
1
(1 row)

Time: 78.413 ms
pavel=# select nextval('aaaa');
nextval
─────────
2
(1 row)

Time: 12.761 ms

pavel=# create table ggg(a serial);
NOTICE: CREATE TABLE will create implicit sequence "ggg_a_seq" for
serial column "ggg.a"
CREATE TABLE
Time: 91.866 ms
pavel=# \d ggg
Table "public.ggg"
Column │ Type │ Modifiers
────────┼─────────┼─────────────────────────────────────────────────
a │ integer │ not null default nextval('ggg_a_seq'::regclass)

pavel=#

regards

Pavel Stehule

2011/2/1 Adarsh Sharma <adarsh.sharma@orkash.com>:

Show quoted text

Dear all,

I am not able to distinct these two datatypes ( Serial and Sequence ) in
Postgresql which resembles like auto-increment in Mysql.

Which one gets priority and When ?

The only thing I am able to find is to use SERIAL because if a drop table
occurs , still SEQUENCE memory is not freed, its garbage remains.

However if we define a SERIAL column in a table , implicitly it makes a
sequence.

Could anyone Please describe me the difference and Which to Use When ?

Thanks & Regards

Adarsh Sharma

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general