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