PostgreSQL unterstützt das Schlüsselwort AUTO_INCREMENT
nicht, das in anderen Datenbanksystemen wie MySQL verwendet wird. Der Versuch, es zu verwenden, führt zu einem Syntaxfehler. In dieser Anleitung wird erläutert, wie Sie in PostgreSQL automatisch inkrementierende Primärschlüssel erreichen.
Der empfohlene Ansatz für PostgreSQL 10 und neuere Versionen ist die Verwendung der Spalte IDENTITY
. Im Gegensatz zu SERIAL
-Spalten bieten IDENTITY
-Spalten mehr Flexibilität mit den Optionen GENERATED BY DEFAULT
und GENERATED ALWAYS
.
<code class="language-sql">CREATE TABLE staff ( staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY, staff text NOT NULL );</code>
<code class="language-sql">ALTER TABLE staff ADD COLUMN staff_id int GENERATED ALWAYS AS IDENTITY;</code>
Für ältere PostgreSQL-Versionen (9.6 und niedriger) bietet der SERIAL
-Pseudotyp eine ähnliche automatische Inkrementierungsfunktion.
<code class="language-sql">CREATE TABLE staff ( staff_id serial PRIMARY KEY, staff text NOT NULL );</code>
SERIAL
erstellt und verwaltet automatisch eine zugehörige Sequenz und stellt so eindeutige, inkrementelle Werte für die Spalte staff_id
sicher.
Für eine detaillierte Kontrolle über eingefügte Werte, sogar zum Überschreiben von Systemstandards oder vom Benutzer bereitgestellten Werten, verwenden Sie OVERRIDING {SYSTEM|USER} VALUE
in Ihren INSERT
-Anweisungen. Dies bietet erweiterte Kontrolle über die einfache automatische Inkrementierung hinaus.
Das obige ist der detaillierte Inhalt vonWarum funktioniert AUTO_INCREMENT in PostgreSQL nicht und wie kann ich automatisch inkrementierende IDs erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!