serial
е, повече или по-малко, тип колона, така че integer serial
е като да кажете text text
, просто кажете serial
:
CREATE TABLE IF NOT EXISTS "category" (
"id" SERIAL PRIMARY KEY,
"name" varchar(30) DEFAULT NULL
);
Ако искате сами да създадете последователността, тогава искате да направите стойността по подразбиране на id
следващата стойност в последователността и това означава да кажете 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
);
За симулиране на обичайния serial
поведение, което също ще искате да направите последователността, притежавана от таблицата:
alter sequence your_seq owned by category.id;
Четене на серийни типове раздел от ръководството може да е полезен.
Също така бих препоръчал да не поставяте двойни кавички в имената на таблиците и колоните, освен ако не се налага. PostgreSQL ще сгъне вашите идентификатори в малки букви, така че id
и "id"
ще бъде същото, но ненужното цитиране е лош навик, който лесно може да доведе до голяма бъркотия от цитати навсякъде.