Van docs :
De gegevenstypen smallserial
, serial
en bigserial
zijn geen echte typen, maar slechts een notatiegemak voor het maken van unieke identificatiekolommen (vergelijkbaar met de AUTO_INCREMENT-eigenschap die door sommige andere databases wordt ondersteund). In de huidige implementatie specificeert u:
CREATE TABLE tablename (
colname SERIAL
);
is gelijk aan het specificeren van:
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;
We hebben dus een integer-kolom gemaakt en ervoor gezorgd dat de standaardwaarden worden toegewezen vanuit een reeksgenerator. Er wordt een beperking NOT NULL toegepast om ervoor te zorgen dat er geen null-waarde kan worden ingevoegd. (In de meeste gevallen zou u ook een UNIEKE of PRIMAIRE SLEUTEL-beperking willen toevoegen om te voorkomen dat dubbele waarden per ongeluk worden ingevoegd, maar dit is niet automatisch.) Ten slotte wordt de reeks gemarkeerd als "eigendom van" de kolom, zodat deze wordt verwijderd als de kolom of tabel wordt verwijderd.