Heim >Datenbank >MySQL-Tutorial >Wie implementieren ich automatisch inkrementierende Spalten in PostgreSQL?
Beim Versuch, AUTO_INCREMENT zum automatischen Nummerieren von Primärschlüsseln in PostgreSQL zu verwenden, kann ein Fehler auftreten. Die folgende SQL zeigt ein Beispiel für den Versuch, eine Tabelle mit AUTO_INCREMENT zu erstellen:
<code class="language-sql">CREATE TABLE Staff ( ID INTEGER NOT NULL AUTO_INCREMENT, Name VARCHAR(40) NOT NULL, PRIMARY KEY (ID) );</code>
Es wird jedoch ein Fehler zurückgegeben:
<code>ERROR: ERROR: syntax error at or near "AUTO_INCREMENT" SQL state: 42601 Character: 63</code>
Dieser Fehler tritt auf, weil AUTO_INCREMENT keine gültige Syntax für die automatische Inkrementierung in PostgreSQL ist. Stattdessen werden je nach PostgreSQL-Version unterschiedliche Mechanismen verwendet:
PostgreSQL 10 oder höher
Verwenden Sie für PostgreSQL 10 oder höher den Spaltentyp IDENTITY. Die Syntax lautet wie folgt:
<code class="language-sql">CREATE TABLE staff ( staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY, staff text NOT NULL );</code>
PostgreSQL 9.6 oder niedriger
Verwenden Sie für PostgreSQL 9.6 oder niedriger den seriellen Datentyp:
<code class="language-sql">CREATE TABLE staff ( staff_id serial PRIMARY KEY, staff text NOT NULL );</code>Der
serielle Pseudodatentyp erstellt automatisch ein Sequenzobjekt und setzt DEFAULT auf den nächsten Wert der Sequenz.
Das obige ist der detaillierte Inhalt vonWie implementieren ich automatisch inkrementierende Spalten in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!