logo

Serijska številka PostgreSQL

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:

    MALESERIJSKO SERIJSKO BIGSERIAL

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:

Serijska številka PostgreSQL

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:

Serijska številka PostgreSQL

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:

Serijska številka PostgreSQL

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:

Serijska številka PostgreSQL

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:

Serijska številka PostgreSQL

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 :

Serijska številka PostgreSQL

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:

Serijska številka PostgreSQL

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.

Serijska številka PostgreSQL

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:

Serijska številka PostgreSQL

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.

Serijska številka PostgreSQL

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:

Serijska številka PostgreSQL

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.