serial
ist mehr oder weniger ein Spaltentyp und sagt so integer serial
ist wie text text
zu sagen , sagen Sie einfach serial
:
CREATE TABLE IF NOT EXISTS "category" (
"id" SERIAL PRIMARY KEY,
"name" varchar(30) DEFAULT NULL
);
Wenn Sie die Sequenz selbst erstellen möchten, sollten Sie den Standardwert id
festlegen der nächste Wert in der Sequenz und das bedeutet, default nextval('your_seq')
zu sagen :
CREATE SEQUENCE your_seq;
CREATE TABLE IF NOT EXISTS "category" (
"id" integer PRIMARY KEY default nextval('your_seq'),
"name" varchar(30) DEFAULT NULL
);
Um die übliche serial
zu simulieren Verhalten möchten Sie auch die Sequenz zum Besitz der Tabelle machen:
alter sequence your_seq owned by category.id;
Lesen der Serientypen Abschnitt des Handbuchs könnte hilfreich sein.
Ich würde auch empfehlen, dass Sie Ihre Tabellen- und Spaltennamen nicht in doppelte Anführungszeichen setzen, es sei denn, Sie müssen es tun. PostgreSQL wird Ihre Bezeichner in Kleinbuchstaben umwandeln, also id
und "id"
wird dasselbe sein, aber unnötiges Zitieren ist eine schlechte Angewohnheit, die leicht überall zu einem großen Durcheinander von Zitaten führen kann.