logo

PostgreSQL-Seriennummer

In diesem Abschnitt werden wir die Funktionsweise von verstehen PostgreSQL-Seriennummer Pseudotyp, der es uns ermöglicht, zu definieren Spalten automatisch inkrementieren in Tabellen. Und wir sehen auch Beispiele des PostgreSQL Serial-Pseudotyp .

Was ist der serielle PostgreSQL-Pseudotyp?

In PostgreSQL gibt es eine bestimmte Art von Datenbankobjektgenerator, die als „ Seriell , was man gewohnt ist Erstellen Sie eine Folge von Ganzzahlen die häufig als verwendet werden Primärschlüssel in einer Tabelle.

Array zum Hinzufügen von Elementen Java

Die Sequenz kann mit Hilfe des generiert werden Pseudotyp SERIAL , während wir eine neue Tabelle erstellen, wie wir im folgenden Befehl sehen können:

 CREATE TABLE table_name( ID SERIAL ); 

PostgreSQL führt Folgendes aus, wenn wir Folgendes bereitstellen Pseudotyp SERIAL zum AUSWEIS Spalte:

  • Zunächst erstellt PostgreSQL ein Sequenzobjekt und legt dann den nächsten durch die Sequenz erstellten Wert als vordefinierten Wert der jeweiligen Spalte fest.
  • Danach erweitert PostgreSQL a NOT NULL-Einschränkung zum ID-Spalte da eine Folge immer eine ganze Zahl erzeugt, die a ist Nicht-Null-Wert .
  • Zuletzt stellt PostgreSQL den Eigentümer der Sequenz bereit ID-Spalte; Als Ausgabe wird das Sequenzobjekt entfernt, wenn die Tabelle oder ID-Spalte ist gefallen.

Hinweis: Wir können beide Befehle verwenden, um den seriellen Pseudotyp anzugeben, da die beiden folgenden Befehle einander ähnlich sind.

 CREATE TABLE table_name( ID SERIAL ); 

 CREATE SEQUENCE table_name_ID_seq; CREATE TABLE table_name ( ID integer NOT NULL DEFAULT nextval('table_name_ID_seq') ); ALTER SEQUENCE table_name_ID_seq OWNED BY table_name.ID; 

Der PostgreSQL Serial-Pseudotyp wurde in drei Typen eingeteilt:

    KLEINE SERIE SERIE GROßSERIE

Wir haben die folgende Tabelle, die alle enthält Serieller Pseudotyp Spezifikation, die von PostgreSQL unterstützt wird:

Name Speichergröße Reichweite
KLEINE SERIE 2 Bytes 1 bis 32767
SERIE 4 Bytes 1 bis 2147483647
GROßSERIE 8 Byte 1 bis 9223372036854775807

Syntax des seriellen PostgreSQL-Pseudotyps

Die Syntax von PostgreSQL Serieller Pseudotyp wie folgt:

 variable_name SERIAL 

Beispiele für den PostgreSQL-Typ SERIAL

Sehen wir uns verschiedene Beispiele an, um zu verstehen, wie das funktioniert Der serielle Pseudotyp PostgreSQL funktioniert .

Hinweis: Wir können die PRIMARY KEY-Einschränkung für die SERIAL-Spalte definieren, da der SERIAL-Typ nicht indirekt einen Index für die Spalte erstellt oder die Spalte zur Primärschlüsselspalte macht.

Wir erstellen eine neue Tabelle mit Hilfe des CREATE-Befehls und fügen einige Werte mit dem INSERT-Befehl ein.

Im folgenden Beispiel verwenden wir die ERSTELLEN Befehl zum Generieren eines Autos Tisch in die Organisationsdatenbank:

 CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL ); 

Ausgabe

Der Autos Die Tabelle wurde nach der Ausführung der oben genannten Befehle erfolgreich erstellt, wie im folgenden Screenshot gezeigt:

PostgreSQL-Seriennummer

Sobald die Autos Nachdem die Tabelle erstellt wurde, können wir mit dem Befehl INSERT einige Werte in sie einfügen. Und wir können das nutzen STANDARD Geben Sie im INSERT-Befehl das Schlüsselwort ein oder lassen Sie den Spaltennamen weg (Car_id) .

 INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera'); 

Ausgabe

Nach der Implementierung des obigen Befehls erhalten wir die folgende Meldung und der Wert wurde erfolgreich in das eingefügt Autos Tisch:

PostgreSQL-Seriennummer

ODER Verwendung der DEFAULT-Schlüsselwort mit dem Spaltennamen (Car_id):

 INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8'); 

Ausgabe

Bei der Implementierung des obigen Befehls erhalten wir die folgende Meldung: Der Wert wurde erfolgreich in die eingefügt Autos Tisch:

PostgreSQL-Seriennummer

Wie wir im obigen Screenshot sehen können, hat PostgreSQL zwei Zeilen in das eingefügt Autos Tisch mit der Car_id Spaltenwerte sind 1 und 2 .

Nach dem Erstellen und Einfügen des Autos Die Werte der Tabelle verwenden wir WÄHLEN Der Befehl gibt alle Zeilen zurück Autos Tisch:

 SELECT * FROM Cars; 

Ausgabe

Nach erfolgreicher Implementierung des obigen Befehls erhalten wir das folgende Ergebnis:

d Flip-Flop
PostgreSQL-Seriennummer

Wir können das nutzen pg_get_serial_sequence() Funktion, um den Sequenznamen von a zu erhalten SERIE Spalte in einer angegebenen Tabelle, wie wir in der folgenden Syntax sehen können:

 pg_get_serial_sequence('table_name','column_name') 

Um das zu bekommen aktueller Wert Durch die von der Sequenz erstellte Sequenz können wir einen Sequenznamen an die Funktion currval() übergeben.

Im folgenden Beispiel haben wir verwendet der currval() Funktion, um den von der erzeugten aktuellen Wert zurückzugeben Autos Tisch Car_id_seq Objekt:

 SELECT currval(pg_get_serial_sequence('Cars', 'car_id')); 

Ausgabe

Nach der Implementierung des obigen Befehls erhalten wir die folgende Ausgabe:

PostgreSQL-Seriennummer

Wir können das nutzen RETURNING Car_id -Klausel in den INSERT-Befehl einfügen, wenn wir die von der Sequenz erstellten Werte erhalten möchten, wenn wir eine neue Zeile in die Tabelle einfügen.

Der folgende Befehl wird verwendet, um eine neue Zeile in das einzufügen Autos Tabelle und gibt die für die generierten Datensätze zurück Car_id Spalte.

 INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id; 

Ausgabe

Wenn wir den obigen Befehl ausführen, erhalten wir die folgende Ausgabe, die Folgendes zurückgibt: Car_id als 3 :

PostgreSQL-Seriennummer

Notiz:

  • Wie wir oben verstanden haben, ist die Sequenzgenerator Der Vorgang ist nicht transaktionssicher, was bedeutet, dass jeder Benutzer einen anderen Wert erhält wenn zwei parallele Datenbanken Verbindungen versuchen, den nächsten Wert aus einer Sequenz abzurufen.
  • Und die Sequenznummer dieses Benutzers bleibt inaktiv und erzeugt eine Lücke in der Sequenz, wenn Ein Benutzer kann die Transaktion rückgängig machen .

Beispiel2

Sehen wir uns noch ein Beispiel an, um das zu lernen Serieller Pseudotyp im Detail.

Also werden wir eine weitere neue Tabelle erstellen Gemüse Tabelle mit Hilfe des CREATE-Befehls in eine ähnliche Datenbank das ist Organisation mit dem Veg_id Spalte als SERIE Pseudotyp.

 CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL ); 

Ausgabe

Der Gemüse Die Tabelle wurde nach der Ausführung der oben genannten Befehle erfolgreich erstellt, wie im folgenden Screenshot gezeigt:

PostgreSQL-Seriennummer

Sobald die Gemüse Wenn die Tabelle erstellt wurde, fügen wir mit dem Befehl INSERT einige Werte ein und lassen die weg Veggies_id Spalte wie im folgenden Befehl gezeigt:

 INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring'); 

Ausgabe

Bei der Implementierung des obigen Befehls erhalten wir die folgende Meldung: Der Wert wurde erfolgreich in eingefügt Gemüse Tisch.

PostgreSQL-Seriennummer

Oder wir können auch das verwenden Standard Schlüsselwort und verwendet das Veggie_id Spalte wie im folgenden Befehl gezeigt:

 INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter'); 

Ausgabe

Nachdem wir den obigen Befehl ausgeführt haben, erhalten wir die folgende Meldung, die besagt, dass wir entweder den verwenden können Standardschlüsselwort oder der Ignorieren Sie den Spaltennamen erhalten wir eine ähnliche Ausgabe:

PostgreSQL-Seriennummer

Daher werden wir noch einige weitere Werte hinzufügen Autos Tabelle mit Hilfe des folgenden Befehls:

CSS-Kommentar
 INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Jalapeno Peppers','Fall'), ('Cucumbers','Summer'), ('Winter Squash','Winter'), ('Snow Peas','Spring'), ('Black Radish','All seasons'), ('Pumpkin','Fall'); 

Ausgabe

Nachdem wir den obigen Befehl ausgeführt haben, erhalten wir die folgende Meldung, die anzeigt, dass der Wert erfolgreich in das eingefügt wurde Gemüse Tisch.

PostgreSQL-Seriennummer

Nach dem Erstellen und Einfügen des Gemüse Die Werte der Tabelle verwenden wir WÄHLEN Befehl zum Zurückgeben aller Zeilen des Gemüse Tisch:

 SELECT * FROM Vegetables; 

Ausgabe

Nach erfolgreicher Implementierung des obigen Befehls erhalten wir die folgende Ausgabe:

PostgreSQL-Seriennummer

Überblick

Im PostgreSQL Serial-Pseudotyp Im Abschnitt haben wir die serielle Pseudotyp-Funktionalität kennengelernt, die hauptsächlich zum Erstellen eines verwendet wird automatische Erhöhungen Spaltenwert für eine bestimmte Tabelle.