logo

PostgreSQL-serieel

In dit gedeelte gaan we de werking ervan begrijpen PostgreSQL-serieel pseudo-type, waarmee we kunnen definiëren kolommen automatisch verhogen in tabellen. En wij zien ook voorbeelden van de PostgreSQL Serieel pseudotype .

Wat is PostgreSQL Serial pseudo-type?

In PostgreSQL hebben we een bepaald soort databaseobjectgenerator bekend als Serieel , wat gewend is maak een reeks gehele getallen die vaak worden gebruikt als Hoofdsleutel in een tafel.

verschil tussen ijs en sneeuw

De reeks kan worden gegenereerd met behulp van de SERIEEL pseudo-type , terwijl we een nieuwe tabel maken, zoals we kunnen zien in de volgende opdracht:

 CREATE TABLE table_name( ID SERIAL ); 

De PostgreSQL doet het volgende als we de SERIEEL pseudo-type naar de ID kaart kolom:

  • Ten eerste zal PostgreSQL een reeksobject maken en vervolgens de volgende waarde die door de reeks wordt gecreëerd, vaststellen als de vooraf gedefinieerde waarde van de betreffende kolom.
  • Daarna zal PostgreSQL een NIET NULL-beperking naar de ID-kolom aangezien een reeks altijd een geheel getal oplevert dat a is niet-nul waarde .
  • Eindelijk zal PostgreSQL de eigenaar van de reeks aan de ID-kolom; als uitvoer wordt het sequence-object verwijderd wanneer de tabel of ID-kolom is gevallen.

Opmerking: we kunnen beide opdrachten gebruiken om het seriële pseudotype op te geven, omdat de onderstaande opdrachten op elkaar lijken.

 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; 

De PostgreSQL Serieel pseudotype is ingedeeld in drie typen, namelijk:

    KLEINESERIE SERIEEL GROTESERIE

We hebben de volgende tabel, die alle bevat Serieel pseudo-type specificatie die wordt ondersteund door PostgreSQL:

Naam Opslaggrootte Bereik
KLEINESERIE 2 bytes 1 tot 32767
SERIEEL 4 bytes 1 tot 2147483647
GROTESERIE 8 bytes 1 tot 9223372036854775807

Syntaxis van PostgreSQL Serieel pseudotype

De syntaxis van PostgreSQL Serieel pseudo-type als volgt:

 variable_name SERIAL 

Voorbeelden van het PostgreSQL SERIAL-type

Laten we verschillende voorbeelden bekijken om te begrijpen hoe de PostgreSQL Serieel pseudotype werkt .

Opmerking: We kunnen de PRIMARY KEY-beperking voor de SERIAL-kolom definiëren, omdat het SERIAL-type niet indirect een index voor de kolom maakt of de kolom als de primaire sleutelkolom maakt.

We maken een nieuwe tabel met de hulp van het CREATE-commando en voegen enkele waarden in met behulp van het INSERT-commando.

In het onderstaande voorbeeld gebruiken we de CREËREN commando om een Auto's tafel in de Organisatiedatabase:

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

Uitvoer

De Auto's tabel is met succes aangemaakt na het uitvoeren van de bovenstaande opdrachten, zoals weergegeven in de onderstaande schermafbeelding:

PostgreSQL-serieel

Zodra de Auto's tabel is gegenereerd, kunnen we er enkele waarden in invoegen met behulp van de opdracht INSERT. En wij kunnen gebruik maken van de STANDAARD trefwoord in de opdracht INSERT of laat de kolomnaam weg (Car_id) .

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

Uitvoer

Na het implementeren van de bovenstaande opdracht krijgen we het volgende bericht en is de waarde met succes ingevoegd in de Auto's tafel:

PostgreSQL-serieel

OF De ... gebruiken STANDAARD trefwoord met de kolomnaam (Car_id):

doorhaling van de afwaardering
 INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8'); 

Uitvoer

Bij het implementeren van het bovenstaande commando krijgen we het volgende bericht; de waarde is succesvol ingevoegd in het Auto's tafel:

PostgreSQL-serieel

Zoals we in de bovenstaande schermafbeelding kunnen zien, heeft PostgreSQL twee rijen ingevoegd in het Auto's tafel met de Auto_id kolomwaarden zijn 1 en 2 .

Na het maken en invoegen van de Auto's tabelwaarden, zullen we de SELECTEER commando retourneert alle rijen van de Auto's tafel:

dfs versus bfs
 SELECT * FROM Cars; 

Uitvoer

Nadat we de bovenstaande opdracht succesvol hebben geïmplementeerd, krijgen we het volgende resultaat:

PostgreSQL-serieel

Wij kunnen gebruik maken van de pg_get_serial_sequence() functie om de reeksnaam van a te verkrijgen SERIEEL kolom in een opgegeven tabel, zoals we kunnen zien in de onderstaande syntaxis:

 pg_get_serial_sequence('table_name','column_name') 

Om de huidige waarde gemaakt door de reeks, kunnen we een reeksnaam doorgeven aan de currval() functie.

In het volgende voorbeeld hebben we gebruikt de currval() functie om de huidige waarde te retourneren die wordt geproduceerd door de Auto's tafel Car_id_seq voorwerp:

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

Uitvoer

Na het implementeren van de bovenstaande opdracht krijgen we de onderstaande uitvoer:

PostgreSQL-serieel

Wij kunnen gebruik maken van de RETOURNEREN Auto_id -clausule in de opdracht INSERT als we de waarden willen krijgen die door de reeks zijn gemaakt wanneer we een nieuwe rij in de tabel invoegen.

Het onderstaande commando wordt gebruikt om een ​​nieuwe rij in te voegen in het Auto's tabel en retourneert de records die zijn gegenereerd voor de Auto_id kolom.

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

Uitvoer

Bij het uitvoeren van de bovenstaande opdracht krijgen we de volgende uitvoer, die de Auto_id als 3 :

PostgreSQL-serieel

Opmerking:

  • Zoals we hierboven begrepen, is de sequentiegenerator de werking is niet transactieveilig, wat impliceert dat elke gebruiker een andere waarde krijgt als er twee parallelle databases zijn verbindingen proberen de volgende waarde uit een reeks te halen.
  • En het volgnummer van die gebruiker is inactief en creëert een gat in de reeks als één gebruiker kan de transactie terugdraaien .

Voorbeeld2

Laten we nog een voorbeeld bekijken om het te leren Serieel pseudo-type in detail.

We gaan dus nog een nieuwe tabel maken als Groenten tabel met behulp van de opdracht CREATE in een soortgelijke database dat is Organisatie met de Veg_id kolom als de SERIEEL pseudo-type.

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

Uitvoer

De Groenten tabel is met succes aangemaakt na het uitvoeren van de bovenstaande opdrachten, zoals weergegeven in de onderstaande schermafbeelding:

PostgreSQL-serieel

Zodra de Groenten tabel is gegenereerd, zullen we er enkele waarden in invoegen met behulp van de opdracht INSERT, en de Groenten_id kolom zoals weergegeven in de onderstaande opdracht:

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

Uitvoer

We krijgen het volgende bericht bij het implementeren van het bovenstaande commando: de waarde is met succes ingevoegd in het Groenten tafel.

PostgreSQL-serieel

Of we kunnen ook de Standaard trefwoord en gebruikt de Veggie_id kolom zoals weergegeven in de volgende opdracht:

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

Uitvoer

Na het uitvoeren van de bovenstaande opdracht krijgen we het onderstaande bericht, waarin staat dat we de Standaard trefwoord of de negeer de kolomnaam , krijgen we een vergelijkbare uitvoer:

PostgreSQL-serieel

Daarom zullen we wat meer waarden toevoegen aan de Auto's tabel met behulp van het volgende commando:

Java-collecties Java
 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'); 

Uitvoer

Na het uitvoeren van de bovenstaande opdracht krijgen we het onderstaande bericht, waarin wordt aangegeven dat de waarde met succes in het Groenten tafel.

PostgreSQL-serieel

Na het maken en invoegen van de Groenten tabelwaarden, zullen we de SELECTEER commando om alle rijen van de Groenten tafel:

 SELECT * FROM Vegetables; 

Uitvoer

Nadat we de bovenstaande opdracht succesvol hebben geïmplementeerd, krijgen we de onderstaande uitvoer:

PostgreSQL-serieel

Overzicht

In de PostgreSQL Serieel pseudotype sectie hebben we de seriële pseudo-type functionaliteit geleerd, die meestal wordt gebruikt om een automatische verhogingen kolomwaarde voor een bepaalde tabel.