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