serial
är mer eller mindre en kolumntyp så att man säger integer serial
är som att säga text text
, säg bara serial
:
CREATE TABLE IF NOT EXISTS "category" (
"id" SERIAL PRIMARY KEY,
"name" varchar(30) DEFAULT NULL
);
Om du vill skapa sekvensen själv så vill du göra standardvärdet för id
nästa värde i sekvensen och det betyder att säga 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
);
För att simulera den vanliga serial
beteende du vill också göra att sekvensen ägs av tabellen:
alter sequence your_seq owned by category.id;
Läser Serial Types avsnittet i manualen kan vara fruktbart.
Jag skulle också rekommendera att du inte dubbelciterar dina tabell- och kolumnnamn om du inte måste. PostgreSQL viker dina identifierare till små bokstäver så id
och "id"
kommer att vara samma sak men onödiga citat är en dålig vana som lätt kan leda till en stor röra av citat överallt.