Heim >Datenbank >MySQL-Tutorial >Wie kann ich automatisch inkrementierende Primärschlüssel in PostgreSQL richtig implementieren?

Wie kann ich automatisch inkrementierende Primärschlüssel in PostgreSQL richtig implementieren?

Susan Sarandon
Susan SarandonOriginal
2025-01-22 11:41:10703Durchsuche

How Do I Properly Implement Auto-Incrementing Primary Keys in PostgreSQL?

Fehlerbehebung bei der automatischen Inkrementierung von Spalten in PostgreSQL

Beim Versuch, AUTO_INCREMENT zum automatischen Nummerieren von Primärschlüsseln in PostgreSQL zu verwenden, können Fehler auftreten. Schauen wir uns die möglichen Ursachen und ihre Lösungen an:

PostgreSQL 10 und höher

In PostgreSQL 10 und höher wird empfohlen, die IDENTITY-Spalte von Standard-SQL anstelle von AUTO_INCREMENT zu verwenden.

Erstellen Sie eine Tabelle mit der IDENTITY-Spalte

<code class="language-sql">CREATE TABLE staff (  
 staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY  
, staff text NOT NULL  
);</code>

IDENTITY-Spalte zur vorhandenen Tabelle hinzufügen

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

Machen Sie dies auch zum Primärschlüssel:

<code class="language-sql">ALTER TABLE staff ADD COLUMN staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY;</code>

PostgreSQL 9.6 oder niedriger

Verwenden Sie für 9.6 oder niedriger den seriellen Pseudodatentyp:

<code class="language-sql">CREATE TABLE staff (  
 staff_id serial PRIMARY KEY  
, staff text NOT NULL  
);</code>

Zusätzliche Hinweise

Bitte stellen Sie sicher, dass Sie gültige Bezeichner verwenden (Kleinbuchstaben, keine Anführungszeichen), um mögliche Probleme zu vermeiden.

Wenn Sie serielle Spalten durch IDENTITY-Spalten ersetzen möchten, lesen Sie bitte dieses Dokument als Anleitung.

Sie können OVERRIDING {SYSTEM|USER} VALUE verwenden, um Systemwerte oder Benutzereingaben in INSERT-Befehlen zu überschreiben.

Das obige ist der detaillierte Inhalt vonWie kann ich automatisch inkrementierende Primärschlüssel in PostgreSQL richtig implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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