V tem razdelku bomo razumeli delovanje Serijska številka PostgreSQL psevdotipa, ki nam omogoča definiranje samodejni prirast stolpcev v tabelah. In tudi vidimo primeri od Psevdotip PostgreSQL Serial .
Kaj je psevdotip PostgreSQL Serial?
V PostgreSQL imamo eno posebno vrsto generatorja objektov baze podatkov, znanega kot Serijski , ki je vajen ustvarite zaporedje celih števil ki se pogosto uporabljajo kot a Primarni ključ v tabeli.
Zaporedje je mogoče ustvariti s pomočjo SERIJSKI psevdotip , medtem ko ustvarjamo novo tabelo, kot lahko vidimo v naslednjem ukazu:
CREATE TABLE table_name( ID SERIAL );
PostgreSQL naredi naslednje, če zagotovimo SERIJSKI psevdotip do ID stolpec:
matematične metode v Javi
- Najprej bo PostgreSQL ustvaril objekt zaporedja in nato vzpostavil naslednjo vrednost, ki jo je ustvarilo zaporedje, kot vnaprej določeno vrednost določenega stolpca.
- Po tem bo PostgreSQL izboljšal a Omejitev NOT NULL do stolpec ID ker zaporedje vedno ustvari celo število, ki je a neničelna vrednost .
- Končno bo PostgreSQL posredoval lastnika zaporedja ID stolpec; kot izhod se zaporedni objekt odstrani, ko tabela oz stolpec ID je izpuščen.
Opomba: oba ukaza lahko uporabimo za določitev serijskega psevdotipa, saj sta oba spodnja ukaza podobna drug drugemu.
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;
The Psevdotip PostgreSQL Serial je razvrščen v tri vrste, ki so naslednji:
Imamo naslednjo tabelo, ki vsebuje vse Serijski psevdotip specifikacija, ki jo podpira PostgreSQL:
Ime | Velikost shranjevanja | Razpon |
---|---|---|
MALESERIJSKO | 2 bajta | 1 do 32767 |
SERIJSKO | 4 bajti | 1 na 2147483647 |
BIGSERIAL | 8 bajtov | 1 na 9223372036854775807 |
Sintaksa psevdotipa PostgreSQL Serial
Sintaksa PostgreSQL Serijski psevdotip kot sledi:
variable_name SERIAL
Primeri vrste PostgreSQL SERIAL
Oglejmo si različne primere, da bomo razumeli, kako PostgreSQL Serial psevdo tip deluje .
Opomba: Omejitev PRIMARY KEY lahko definiramo za stolpec SERIAL, ker tip SERIAL posredno ne ustvari indeksa v stolpcu ali stolpca ne naredi za stolpec primarnega ključa.
S pomočjo ukaza CREATE ustvarjamo eno novo tabelo in z ukazom INSERT vstavljamo nekaj vrednosti.
V spodnjem primeru uporabljamo USTVARJANJE ukaz za ustvarjanje a Avtomobili mizo v Baza podatkov organizacije:
CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL );
Izhod
The Avtomobili Tabela je bila uspešno ustvarjena po izvedbi zgornjih ukazov, kot je prikazano na spodnjem posnetku zaslona:
Ko je Avtomobili tabela ustvarjena, lahko vanjo vstavimo nekaj vrednosti z ukazom INSERT. In lahko uporabimo PRIVZETO ključno besedo v ukazu INSERT ali izpustite ime stolpca (Car_id) .
INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera');
Izhod
Po izvedbi zgornjega ukaza bomo prejeli naslednje sporočilo in vrednost je bila uspešno vstavljena v Avtomobili tabela:
ALI Uporabljati PRIVZETA ključna beseda z imenom stolpca (Car_id):
INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8');
Izhod
Ko izvedemo zgornji ukaz, bomo prejeli naslednje sporočilo; vrednost je bila uspešno vstavljena v Avtomobili tabela:
Kot lahko vidimo na zgornjem posnetku zaslona, je PostgreSQL vstavil dve vrstici v Avtomobili mizo z Car_id vrednosti stolpcev so 1 in 2 .
Po ustvarjanju in vstavljanju Avtomobili vrednosti tabele, bomo uporabili IZBERI ukaz vrne vse vrstice Avtomobili tabela:
SELECT * FROM Cars;
Izhod
Po uspešni izvedbi zgornjega ukaza bomo dobili naslednji rezultat:
Lahko uporabimo pg_get_serial_sequence() funkcijo za pridobitev imena zaporedja a SERIJSKO stolpec v določeni tabeli, kot lahko vidimo v spodnji sintaksi:
pg_get_serial_sequence('table_name','column_name')
Da bi dobili trenutna vrednost ustvari zaporedje, lahko posredujemo ime zaporedja funkciji currval().
V naslednjem primeru smo uporabili currval() funkcija za vrnitev trenutne vrednosti, ki jo ustvari Avtomobili tabela Car_id_seq predmet:
SELECT currval(pg_get_serial_sequence('Cars', 'car_id'));
Izhod
Po izvedbi zgornjega ukaza bomo dobili spodnji rezultat:
Lahko uporabimo VRAČANJE Car_id v ukaz INSERT, če želimo pridobiti tiste vrednosti, ki jih ustvari zaporedje, ko v tabelo vstavimo novo vrstico.
Spodnji ukaz se uporablja za vstavljanje nove vrstice v Avtomobili tabelo in vrne tiste zapise, ustvarjene za Car_id stolpec.
INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id;
Izhod
Ko izvedemo zgornji ukaz, bomo dobili naslednji izhod, ki vrne Car_id kot 3 :
Opomba:
- Kot smo razumeli zgoraj, generator zaporedja operacija ni transakcijsko varna, kar pomeni, da bo vsak uporabnik dobil drugačno vrednost če sta dve vzporedni bazi podatkov povezave poskušajo dobiti naslednjo vrednost iz zaporedja.
- Zaporedna številka tega uporabnika bo nedejavna in ustvarila vrzel v zaporedju if en uporabnik lahko transakcijo vrne nazaj .
Primer2
Oglejmo si še en primer, da se naučimo Serijski psevdotip Podrobno.
Torej, ustvarili bomo še eno novo tabelo kot zelenjava tabelo s pomočjo ukaza CREATE v podobno zbirka podatkov to je Organizacija z Veg_id stolpec kot SERIJSKO psevdotip.
CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL );
Izhod
java stikalo
The zelenjava Tabela je bila uspešno ustvarjena po izvedbi zgornjih ukazov, kot je prikazano na spodnjem posnetku zaslona:
Ko je zelenjava ustvarjena tabela, bomo vanjo vstavili nekaj vrednosti z ukazom INSERT in izpustili Veggies_id stolpec, kot je prikazano v spodnjem ukazu:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring');
Izhod
Ob izvajanju zgornjega ukaza bomo prejeli naslednje sporočilo: vrednost je bila uspešno vstavljena v zelenjava tabela.
Ali pa lahko uporabimo tudi Privzeto ključno besedo in uporablja Veggie_id stolpec, kot je prikazano v naslednjem ukazu:
INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter');
Izhod
Po izvedbi zgornjega ukaza bomo prejeli spodnje sporočilo, ki pravi, da lahko uporabimo Privzeta ključna beseda ali ignorirajte ime stolpca , bomo dobili podoben rezultat:
Zato bomo dodali še nekaj vrednosti Avtomobili tabelo s pomočjo ukaza:
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');
Izhod
Po izvedbi zgornjega ukaza bomo prejeli spodnje sporočilo, ki prikazuje, da je bila vrednost uspešno vstavljena v zelenjava tabela.
Po ustvarjanju in vstavljanju zelenjava vrednosti tabele, bomo uporabili IZBERI ukaz za vrnitev vseh vrstic zelenjava tabela:
SELECT * FROM Vegetables;
Izhod
Po uspešni izvedbi zgornjega ukaza bomo dobili spodnji rezultat:
Pregled
V Psevdotip PostgreSQL Serial razdelku smo se naučili funkcionalnosti serijskega psevdotipa, ki se večinoma uporablja za ustvarjanje samodejna povečanja vrednost stolpca za določeno tabelo.