Heim > Datenbank > MySQL-Tutorial > Warum funktioniert AUTO_INCREMENT in PostgreSQL nicht und wie kann ich automatisch inkrementierende IDs erreichen?

Warum funktioniert AUTO_INCREMENT in PostgreSQL nicht und wie kann ich automatisch inkrementierende IDs erreichen?

DDD
Freigeben: 2025-01-22 11:37:10
Original
356 Leute haben es durchsucht

Why Doesn't AUTO_INCREMENT Work in PostgreSQL, and How Can I Achieve Auto-Incrementing IDs?

Fehlerbehebung bei AUTO_INCREMENT von PostgreSQL

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.

PostgreSQL 10 und höher: Verwenden von IDENTITY-Spalten

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.

Erstellen einer 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>
Nach dem Login kopieren

Hinzufügen einer IDENTITY-Spalte zu einer vorhandenen Tabelle

<code class="language-sql">ALTER TABLE staff ADD COLUMN staff_id int GENERATED ALWAYS AS IDENTITY;</code>
Nach dem Login kopieren

PostgreSQL 9.6 und älter: Verwendung von SERIAL

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>
Nach dem Login kopieren

SERIAL erstellt und verwaltet automatisch eine zugehörige Sequenz und stellt so eindeutige, inkrementelle Werte für die Spalte staff_id sicher.

Eingefügte Werte steuern

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage