Från dokument :
Datatyperna smallserial
, serial
och bigserial
är inte sanna typer, utan bara en notationsbekvämlighet för att skapa unika identifierarkolumner (liknande AUTO_INCREMENT-egenskapen som stöds av vissa andra databaser). I den nuvarande implementeringen specificerar du:
CREATE TABLE tablename (
colname SERIAL
);
motsvarar att ange:
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;
Således har vi skapat en heltalskolumn och ordnat så att dess standardvärden tilldelas från en sekvensgenerator. En NOT NULL-begränsning tillämpas för att säkerställa att ett nollvärde inte kan infogas. (I de flesta fall skulle du också vilja bifoga en UNIK eller PRIMÄR KEY-begränsning för att förhindra att duplicerade värden infogas av misstag, men detta är inte automatiskt.) Slutligen markeras sekvensen som "ägd av" kolumnen, så att den kommer att tas bort om kolumnen eller tabellen tas bort.