Sekwencje a typ SERIAL

Aby stworzyć pole typu AUTO_INCREMENT należy zastosować sekwencję

SEQUENCE:

jburiak=# CREATE SEQUENCE b_id;
CREATE
jburiak=# create table b (id int4 not null default nextval('b_id'), pole text);
CREATE
jburiak=# insert into b (pole) values ('wartość pierwsza');
INSERT 1
jburiak=# insert into b (pole) values ('wartość druga');
INSERT 1
jburiak=# select * from b;
 id | pole
----+------------------
  1 | wartość pierwsza
  2 | wartość druga
(2 rows)

CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]

[ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]

[ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]

Tak więc: jeśli potrzebujemy licznika od 1 do około 2 miliardów należy użyc SERIAL. Jeśli jednak potrzebujemy mieć licznik liczący w dół (od -1 do -dwóch miliardów), albo przeskakujący co dwie lub więcej liczb to należy utworzyć sekwencję.