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)
w serialu nie możemy wpływać na inne parametry sekwencji (skok, wartość początkowa czy końcowa)
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ę.