Thread: Serial Vs Sequence

Serial Vs Sequence

From
Adarsh Sharma
Date:
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

Re: Serial Vs Sequence

From
Pavel Stehule
Date:
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>:
> 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
>

Re: Serial Vs Sequence

From
John R Pierce
Date:
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.