Fra dokumenter :
Datatyperne smallserial
, serial
og bigserial
er ikke sande typer, men blot en notationsbekvemmelighed til at skabe unikke identifikatorkolonner (svarende til AUTO_INCREMENT-egenskaben, der understøttes af nogle andre databaser). I den nuværende implementering, specificering af:
CREATE TABLE tablename (
colname SERIAL
);
svarer til at angive:
CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
);
ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;
Vi har således oprettet en heltalskolonne og arrangeret, så dens standardværdier tildeles fra en sekvensgenerator. En NOT NULL-begrænsning anvendes for at sikre, at en null-værdi ikke kan indsættes. (I de fleste tilfælde vil du også ønske at vedhæfte en UNIK eller PRIMÆR NØGLE-begrænsning for at forhindre, at duplikerede værdier indsættes ved et uheld, men dette er ikke automatisk.) Til sidst markeres sekvensen som "ejet af" kolonnen, så den slettes, hvis kolonnen eller tabellen slettes.