serial
er mere eller mindre en kolonnetype, så der siger integer serial
er som at sige text text
, bare sig serial
:
CREATE TABLE IF NOT EXISTS "category" (
"id" SERIAL PRIMARY KEY,
"name" varchar(30) DEFAULT NULL
);
Hvis du selv vil oprette sekvensen, vil du lave standardværdien id
den næste værdi i sekvensen, og det betyder at sige default nextval('your_seq')
:
CREATE SEQUENCE your_seq;
CREATE TABLE IF NOT EXISTS "category" (
"id" integer PRIMARY KEY default nextval('your_seq'),
"name" varchar(30) DEFAULT NULL
);
For at simulere den sædvanlige serial
adfærd vil du også gerne gøre sekvensen ejet af tabellen:
alter sequence your_seq owned by category.id;
Læsning af Serielle typer afsnittet i manualen kan være frugtbart.
Jeg vil også anbefale, at du ikke dobbeltciterer dine tabel- og kolonnenavne, medmindre du er nødt til det. PostgreSQL vil folde dine identifikatorer til små bogstaver, så id
og "id"
vil være det samme, men unødvendige citater er en dårlig vane, der nemt kan føre til et stort rod af citater overalt.