serial
est, plus ou moins, un type de colonne, c'est-à-dire integer serial
revient à dire text text
, dites simplement serial
:
CREATE TABLE IF NOT EXISTS "category" (
"id" SERIAL PRIMARY KEY,
"name" varchar(30) DEFAULT NULL
);
Si vous souhaitez créer la séquence vous-même, vous souhaitez définir la valeur par défaut de id
la valeur suivante dans la séquence et cela signifie dire 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
);
Pour simuler le serial
habituel vous souhaiterez également que la séquence appartienne à la table :
alter sequence your_seq owned by category.id;
Lecture des Types de série section du manuel pourrait être fructueuse.
Je vous recommande également de ne pas mettre entre guillemets les noms de vos tables et de vos colonnes, sauf si vous y êtes obligé. PostgreSQL pliera vos identifiants en minuscules donc id
et "id"
sera la même chose, mais les citations inutiles sont une mauvaise habitude qui peut facilement conduire à un grand désordre de citations partout.