Beim Erstellen einer Tabelle in PostgreSQL können Fehler auftreten, wenn Sie versuchen, die Option AUTO_INCREMENT für eine Primärschlüsselspalte zu verwenden. Dieser Artikel befasst sich mit diesem Problem und bietet eine umfassende Lösung für die automatische Inkrementierung von Tabellenspalten.
Die aufgetretene Fehlermeldung weist auf einen Syntaxfehler im Zusammenhang mit dem Schlüsselwort AUTO_INCREMENT hin. PostgreSQL unterstützt das Schlüsselwort AUTO_INCREMENT nicht. Stattdessen werden verschiedene Techniken verwendet, um Primärschlüsselwerte automatisch zu generieren.
Für PostgreSQL 10 und höher ist die IDENTITY-Spalte die bevorzugte Methode zur automatischen Inkrementierung von Primärschlüsseln. Eine IDENTITY-Spalte ist ein besonderer Spaltentyp, der automatisch einen eindeutigen Wert für jede Zeile generiert.
So erstellen Sie eine Tabelle mit einer IDENTITY-Spalte:
<code class="language-sql">CREATE TABLE staff ( staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY, staff text NOT NULL );</code>
GENERATED ALWAYS-Klausel stellt sicher, dass Spaltenwerte automatisch generiert werden, auch wenn Werte explizit in der INSERT-Anweisung bereitgestellt werden.
Für PostgreSQL 9.6 und niedriger kann der serielle Pseudodatentyp verwendet werden, um Primärschlüssel automatisch zu inkrementieren. Die serielle Spalte erstellt im Hintergrund ein Sequenzobjekt und setzt den Standardwert der Spalte automatisch auf den nächsten Wert in der Sequenz.
So erstellen Sie eine Tabelle mit einer seriellen Spalte:
<code class="language-sql">CREATE TABLE staff ( staff_id serial PRIMARY KEY, staff text NOT NULL );</code>
Sowohl IDENTITY- als auch serielle Spalten generieren automatisch Werte, Sie können diese Werte jedoch mit der Syntax OVERRIDING SYSTEM|USER VALUE in der INSERT-Anweisung überschreiben.
Das obige ist der detaillierte Inhalt vonWie implementiert man automatisch inkrementierende Spalten in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!