PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL 9.1-Primärschlüssel-Autoinkrement

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.