logo

PostgreSQL serijski

U ovom odjeljku ćemo razumjeti rad PostgreSQL serijski pseudo-tip, koji nam omogućuje definiranje stupci s automatskim povećanjem u tablicama. I također vidimo primjeri od PostgreSQL serijski pseudotip .

Što je PostgreSQL serijski pseudotip?

U PostgreSQL-u imamo jednu posebnu vrstu generatora objekata baze podataka poznatu kao Serijski , koji je naviknut stvoriti niz cijelih brojeva koji se često koriste kao Glavni ključ u tablici.

aps c kod

Niz se može generirati uz pomoć SERIJSKI pseudotip , dok stvaramo novu tablicu, kao što možemo vidjeti u sljedećoj naredbi:

 CREATE TABLE table_name( ID SERIAL ); 

PostgreSQL radi sljedeće ako pružimo SERIJSKI pseudotip prema iskaznica stupac:

  • Najprije će PostgreSQL stvoriti objekt niza, a zatim će uspostaviti sljedeću vrijednost koju stvara niz kao unaprijed definiranu vrijednost određenog stupca.
  • Nakon toga, PostgreSQL će unaprijediti a NIJE NULL ograničenje prema ID stupac budući da niz uvijek proizvodi cijeli broj koji je a vrijednost koja nije nula .
  • Napokon, PostgreSQL će dati vlasnika niza ID stupac; kao izlaz, objekt sekvence se uklanja kada tablica ili ID stupac ispušteno je.

Napomena: Obje naredbe možemo koristiti za određivanje serijskog pseudotipa jer su obje naredbe u nastavku slične jedna drugoj.

 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 PostgreSQL serijski pseudotip je klasificirana u tri vrste koje su sljedeće:

    MALOSERIJSKO SERIJSKI BIGSERIAL

Imamo sljedeću tablicu koja sadrži sve Serijski pseudotip specifikacija koju podržava PostgreSQL:

Ime Veličina pohrane Raspon
MALOSERIJSKO 2 bajta 1 do 32767
SERIJSKI 4 bajta 1 do 2147483647
BIGSERIAL 8 bajtova 1 do 9223372036854775807

Sintaksa serijskog pseudotipa PostgreSQL

Sintaksa PostgreSQL-a Serijski pseudotip kako slijedi:

 variable_name SERIAL 

Primjeri tipa PostgreSQL SERIAL

Pogledajmo različite primjere da bismo razumjeli kako PostgreSQL serijski pseudo tip radi .

Napomena: Možemo definirati ograničenje PRIMARY KEY za stupac SERIAL jer tip SERIAL neizravno ne stvara indeks na stupcu niti čini stupac stupcem primarnog ključa.

Stvaramo jednu novu tablicu uz pomoć naredbe CREATE i umećemo neke vrijednosti pomoću naredbe INSERT.

U donjem primjeru koristimo STVORITI naredba za generiranje a Automobili stol u Baza podataka organizacije:

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

Izlaz

The Automobili tablica je uspješno stvorena nakon izvršavanja gornjih naredbi, kao što je prikazano na slici ispod:

PostgreSQL serijski

Jednom Automobili je tablica generirana, možemo unijeti neke vrijednosti u nju pomoću naredbe INSERT. I možemo koristiti ZADANO ključnu riječ u naredbi INSERT ili izostavite naziv stupca (Car_id) .

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

Izlaz

Nakon implementacije gornje naredbe, dobit ćemo sljedeću poruku, a vrijednost je uspješno umetnuta u Automobili stol:

PostgreSQL serijski

ILI Koristiti ZADANA ključna riječ s nazivom stupca (Car_id):

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

Izlaz

Nakon implementacije gornje naredbe, dobit ćemo sljedeću poruku; vrijednost je uspješno umetnuta u Automobili stol:

PostgreSQL serijski

Kao što možemo vidjeti na gornjoj snimci zaslona, ​​PostgreSQL je umetnuo dva retka u Automobili stol s Car_id vrijednosti stupaca su 1. i 2 .

Nakon izrade i umetanja Automobili vrijednosti tablice, koristit ćemo IZABERI naredba vraća sve retke od Automobili stol:

 SELECT * FROM Cars; 

Izlaz

Nakon uspješne implementacije gornje naredbe, dobit ćemo sljedeći rezultat:

PostgreSQL serijski

Možemo koristiti pg_get_serial_sequence() funkcija za dobivanje naziva niza a SERIJSKI stupac u određenoj tablici kao što možemo vidjeti u donjoj sintaksi:

 pg_get_serial_sequence('table_name','column_name') 

Da biste dobili Trenutna vrijednost stvoren nizom, možemo proslijediti naziv niza funkciji currval().

U sljedećem primjeru koristili smo currval() funkcija za vraćanje trenutne vrijednosti koju proizvodi Automobili stol Car_id_seq objekt:

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

Izlaz

Nakon implementacije gornje naredbe, dobit ćemo rezultat ispod:

PostgreSQL serijski

Možemo koristiti VRAĆANJE Car_id klauzulu u naredbu INSERT ako želimo dobiti one vrijednosti koje stvara niz kada umetnemo novi red u tablicu.

Donja naredba koristi se za umetanje novog retka u Automobili tablicu i vraća te zapise generirane za Car_id stupac.

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

Izlaz

Nakon izvršavanja gornje naredbe, dobit ćemo sljedeći izlaz koji vraća Car_id kao 3 :

PostgreSQL serijski

Bilješka:

  • Kao što smo gore shvatili, generator sekvenci operacija nije sigurna za transakcije, što implicira da će svaki korisnik dobiti drugačiju vrijednost ako dvije paralelne baze podataka veze pokušavaju dobiti sljedeću vrijednost iz niza.
  • A redni broj tog korisnika bit će neaktivan i stvara prazninu u nizu if jedan korisnik može poništiti transakciju .

Primjer2

Pogledajmo još jedan primjer da naučimo Serijski pseudotip detaljno.

Dakle, stvorit ćemo još jednu novu tablicu kao Povrće tablicu uz pomoć naredbe CREATE pretvoriti u sličnu baza podataka to je Organizacija s Veg_id stupac kao SERIJSKI pseudotip.

java ulančavanje nizova
 CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL ); 

Izlaz

The Povrće tablica je uspješno stvorena nakon izvršavanja gornjih naredbi, kao što je prikazano na slici ispod:

PostgreSQL serijski

Jednom Povrće je tablica generirana, umetnut ćemo neke vrijednosti u nju pomoću naredbe INSERT, a izostaviti Veggies_id stupac kao što je prikazano u naredbi u nastavku:

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

Izlaz

Dobit ćemo sljedeću poruku o implementaciji gornje naredbe: vrijednost je uspješno umetnuta u Povrće stol.

PostgreSQL serijski

Ili, također možemo koristiti Zadano ključnu riječ i koristi Vege_id stupac kao što je prikazano u sljedećoj naredbi:

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

Izlaz

Nakon izvršenja gornje naredbe, dobit ćemo donju poruku, koja kaže da ili možemo koristiti Zadana ključna riječ ili ignorirajte naziv stupca , dobit ćemo sličan rezultat:

PostgreSQL serijski

Stoga ćemo dodati još neke vrijednosti Automobili tablicu uz pomoć sljedeće naredbe:

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

Izlaz

Nakon izvršenja gornje naredbe, dobit ćemo donju poruku koja prikazuje da je vrijednost uspješno umetnuta u Povrće stol.

PostgreSQL serijski

Nakon izrade i umetanja Povrće vrijednosti tablice, koristit ćemo IZABERI naredba za vraćanje svih redaka Povrće stol:

 SELECT * FROM Vegetables; 

Izlaz

Nakon uspješne implementacije gornje naredbe, dobit ćemo rezultat ispod:

PostgreSQL serijski

Pregled

u PostgreSQL serijski pseudotip odjeljku, naučili smo funkcionalnost serijskog pseudo tipa, koja se uglavnom koristi za stvaranje automatski povećava vrijednost stupca za određenu tablicu.