Wie gebe ich an, dass eine Spalte in pgAdmin automatisch inkrementiert werden soll?

14

Ich habe angefangen, pgAdmin III zu lernen, um eine PostgreSQL-Datenbank zu verwalten. Die Anwendung war jedoch nicht einfach zu bedienen.

Wenn ich mit pgAdmin III eine Tabelle erstelle oder erstellt habe, wie kann ich einer Spalten-ID mit dem Typ Integer die Funktion "Auto-Increment" hinzufügen?

Jonas
quelle

Antworten:

16

Zwei Optionen: Verwenden Sie den "Datentyp" SERIAL oder erstellen Sie eine Sequenz und verwenden Sie diese Sequenz als Standardwert für Ihre Ganzzahl:

CREATE SEQUENCE your_seq;
CREATE TABLE foo(
  id int default nextval('your_seq'::regclass),
  other_column TEXT
);
INSERT INTO foo(other_column) VALUES ('bar') RETURNING *;
Frank Heikens
quelle
1
Diese Antwort könnte so aktualisiert werden, dass GENERATED BY DEFAULT AS IDENTITYsie mit Postgres> = 10 eingeführt wird.
Madbreaks
15

Wenn Sie dies in PGAdmin tun möchten, ist dies viel einfacher als die Verwendung der Befehlszeile. Um in PostgreSQL einer Spalte ein Auto-Inkrement hinzuzufügen, müssen wir zunächst eine Auto-Inkrement-Sequenz erstellen und sie der erforderlichen Spalte hinzufügen. Mir hat das gefallen

1) Zuerst müssen Sie sicherstellen, dass es einen Primärschlüssel für Ihre Tabelle gibt. Behalten Sie außerdem den Datentyp des Primärschlüssels in Bigint oder Smallint bei. (Ich habe bigint verwendet und konnte keinen Datentyp namens serial finden, wie in anderen Antworten an anderer Stelle erwähnt.)

2) Fügen Sie dann eine Sequenz hinzu, indem Sie mit der rechten Maustaste auf sequence-> add new sequence klicken . Wenn die Tabelle keine Daten enthält, lassen Sie die Reihenfolge unverändert und nehmen Sie keine Änderungen vor. Speichern Sie es einfach. Wenn Daten vorhanden sind, fügen Sie den letzten oder höchsten Wert in der Primärschlüsselspalte zum aktuellen Wert auf der Registerkarte "Definitionen" hinzu, wie unten gezeigt. Bildbeschreibung hier eingeben

3) Fügen Sie abschließend die Zeile nextval('your_sequence_name'::regclass)wie unten gezeigt zum Standardwert in Ihrem Primärschlüssel hinzu.

Bildbeschreibung hier eingeben Stellen Sie sicher, dass der Sequenzname hier korrekt ist. Dies ist alles und das automatische Inkrementieren sollte funktionieren.

toing_toing
quelle
4
Ich bin nicht einverstanden mit "Einfacher in PgAdmin". Sie denken, es ist einfacher, durch Klicks zu gehen, als nur eine Spalte zu erstellen SERIAL?
ypercubeᵀᴹ
1
Soll ich sagen, einfacher für diejenigen, die an GUIs gewöhnt sind und wenn Sie nicht mit Befehlszeilen vertraut sind. :)
toing_toing