serial
é, mais ou menos, um tipo de coluna assim dizendo integer serial
é como dizer text text
, apenas diga serial
:CREATE TABLE IF NOT EXISTS "category" (
"id" SERIAL PRIMARY KEY,
"name" varchar(30) DEFAULT NULL
);
Se você quiser criar a sequência você mesmo, então você quer fazer o valor padrão de
id
o próximo valor na sequência e isso significa dizer 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
);
Para simular o usual
serial
comportamento, você também desejará tornar a sequência de propriedade da tabela:alter sequence your_seq owned by category.id;
Lendo os Tipos de série seção do manual pode ser frutífera.
Eu também recomendo que você não coloque aspas duplas em seus nomes de tabela e coluna, a menos que seja necessário. O PostgreSQL dobrará seus identificadores para letras minúsculas, então
id
e "id"
será a mesma coisa, mas citações desnecessárias são um mau hábito que pode facilmente levar a uma grande confusão de citações em todos os lugares.