Šiame skyriuje mes suprasime, kaip veikia PostgreSQL serija pseudo-tipas, leidžiantis apibrėžti automatinio padidinimo stulpeliai lentelėse. Ir mes taip pat matome pavyzdžių iš PostgreSQL serijinis pseudo tipas .
Kas yra PostgreSQL Serial pseudo tipas?
„PostgreSQL“ turime vieną konkretų duomenų bazės objektų generatorių, žinomą kaip Serijinis , kuri yra įpratusi sukurti sveikųjų skaičių seką kurie dažnai naudojami kaip a Pirminis raktas lentelėje.
Seka gali būti sukurta naudojant SERIAL pseudo-tipas , kol kuriame naują lentelę, kaip matome šioje komandoje:
CREATE TABLE table_name( ID SERIAL );
„PostgreSQL“ atlieka šiuos veiksmus, jei pateikiame SERIAL pseudo-tipas prie ID stulpelis:
- Pirma, „PostgreSQL“ sukurs sekos objektą, o tada nustatys sekančią seką kaip konkretaus stulpelio iš anksto nustatytą reikšmę.
- Po to PostgreSQL pagerins a NOT NULL apribojimas prie ID stulpelis nes seka visada sukuria sveikąjį skaičių, kuris yra a nenuline vertė .
- Pagaliau PostgreSQL pateiks sekos savininką ID stulpelis; kaip išvestis, sekos objektas pašalinamas, kai lentelė arba ID stulpelis yra nuleistas.
Pastaba: galime naudoti abi komandas, kad nurodytume serijinį pseudo tipą, nes abi toliau pateiktos komandos yra panašios viena į kitą.
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 serijinis pseudo tipas buvo suskirstytas į tris tipus, kurie yra tokie:
Turime šią lentelę, kurioje yra visa informacija Serijinis pseudo tipas specifikacija, kurią palaiko PostgreSQL:
latekso sąrašai
vardas | Sandėliavimo dydis | diapazonas |
---|---|---|
MAŽAS SERIJA | 2 baitai | 1 iki 32767 |
SERIJINIS | 4 baitai | 1 iki 2147483647 |
BIGSERIAL | 8 baitai | 1 iki 9223372036854775807 |
„PostgreSQL“ serijos pseudotipo sintaksė
PostgreSQL sintaksė Serijinis pseudo tipas taip:
variable_name SERIAL
PostgreSQL SERIAL tipo pavyzdžiai
Pažiūrėkime įvairius pavyzdžius, kad suprastume, kaip PostgreSQL Serial pseudo tipas veikia .
Pastaba: Stulpeliui SERIAL galime apibrėžti PIRMINIO RAKTO apribojimą, nes SERIAL tipas netiesiogiai nesukuria stulpelio indekso arba nepadaro stulpelio pagrindinio rakto stulpeliu.
Sukuriame vieną naują lentelę su komandos CREATE pagalba ir įterpiame kai kurias reikšmes naudodami komandą INSERT .
Žemiau pateiktame pavyzdyje mes naudojame KURTI komanda generuoti a Automobiliai stalą į Organizacijos duomenų bazė:
CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL );
Išvestis
The Automobiliai Lentelė buvo sėkmingai sukurta įvykdžius aukščiau nurodytas komandas, kaip parodyta žemiau esančioje ekrano kopijoje:
Kartą Automobiliai lentelė buvo sugeneruota, kai kurias reikšmes į ją galime įterpti naudodami komandą INSERT. Ir mes galime naudoti NUMATYTAS raktinį žodį komandoje INSERT arba praleiskite stulpelio pavadinimą (Car_id) .
INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera');
Išvestis
Įgyvendinę aukščiau pateiktą komandą, gausime šį pranešimą, o reikšmė buvo sėkmingai įterpta į Automobiliai lentelė:
ARBA Naudojant NUMATYTOJI raktinis žodis su stulpelio pavadinimu (Car_id):
INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8');
Išvestis
Įgyvendinę aukščiau pateiktą komandą, gausime šį pranešimą; reikšmė sėkmingai įterpta į Automobiliai lentelė:
masyvo sąrašas java rūšiavimo
Kaip matome aukščiau esančioje ekrano kopijoje, PostgreSQL įterpė dvi eilutes į Automobiliai stalas su Automobilio_id stulpelių reikšmės yra 1 ir 2 .
Sukūrę ir įdėję Automobiliai lentelės reikšmes, naudosime PASIRINKTI komanda grąžina visas eilutes Automobiliai lentelė:
konstruktoriai java
SELECT * FROM Cars;
Išvestis
Sėkmingai įgyvendinę aukščiau pateiktą komandą, gausime tokį rezultatą:
Mes galime naudoti pg_get_serial_sequence() funkcija gauti sekos pavadinimą a SERIJINIS stulpelyje nurodytoje lentelėje, kaip matome toliau pateiktoje sintaksėje:
pg_get_serial_sequence('table_name','column_name')
Norėdami gauti dabartinė vertė sukurtą sekos, galime perduoti sekos pavadinimą currval() funkcijai.
Toliau pateiktame pavyzdyje mes naudojome currval () funkcija grąžinti dabartinę vertę, kurią sukuria Automobiliai stalo Automobilio_id_seq objektas:
SELECT currval(pg_get_serial_sequence('Cars', 'car_id'));
Išvestis
Įdiegę aukščiau pateiktą komandą, gausime žemiau pateiktą išvestį:
Mes galime naudoti GRĄŽINAMAS Automobilio_id sąlygą į komandą INSERT, jei norime gauti tas reikšmes, kurias sukuria seka, kai į lentelę įterpiame naują eilutę.
Žemiau pateikta komanda naudojama įterpti naują eilutę į Automobiliai lentelę ir grąžina tuos įrašus, sugeneruotus Automobilio_id stulpelyje.
INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id;
Išvestis
Vykdydami aukščiau pateiktą komandą, gausime šią išvestį, kuri grąžina Automobilio_id kaip 3 :
Pastaba:
- Kaip supratome aukščiau, sekos generatorius operacija neapsaugota nuo operacijų, o tai reiškia, kad kiekvienas vartotojas gaus skirtingą vertę jei dvi lygiagrečios duomenų bazės ryšiai bando gauti kitą reikšmę iš sekos.
- O to vartotojo eilės numeris bus neaktyvus ir sukuria tarpą sekoje if vienas vartotojas gali atšaukti operaciją .
2 pavyzdys
Pažiūrėkime dar vieną pavyzdį, kad sužinotume Serijinis pseudo tipas detaliai.
Taigi, mes ketiname sukurti dar vieną naują lentelę kaip a Daržovės lentelė su komandos CREATE pagalba į panašią duomenų bazėje tai yra Organizacija su Veg_id stulpelis kaip SERIJINIS pseudo tipo.
CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL );
Išvestis
The Daržovės Lentelė buvo sėkmingai sukurta įvykdžius aukščiau nurodytas komandas, kaip parodyta žemiau esančioje ekrano kopijoje:
įmesti į sql
Kartą Daržovės lentelė buvo sugeneruota, mes įterpsime kai kurias reikšmes į ją naudodami komandą INSERT ir praleisime Veggies_id stulpelyje, kaip parodyta toliau pateiktoje komandoje:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring');
Išvestis
Įdiegę aukščiau pateiktą komandą gausime tokį pranešimą: reikšmė sėkmingai įterpta į Daržovės stalo.
Arba taip pat galime naudoti Numatytas raktinį žodį ir naudoja Veggie_id stulpelyje, kaip parodyta šioje komandoje:
INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter');
Išvestis
Įvykdę aukščiau pateiktą komandą, gausime žemiau esantį pranešimą, kuriame sakoma, kad galime naudoti Numatytasis raktinis žodis arba nepaisyti stulpelio pavadinimo , gausime panašią išvestį:
Todėl pridėsime dar keletą reikšmių Automobiliai lentelę naudodami šią komandą:
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');
Išvestis
Įvykdę aukščiau pateiktą komandą, gausime žemiau esantį pranešimą, kuriame bus rodoma, kad reikšmė sėkmingai įterpta į Daržovės stalo.
alfa beta genėjimo pavyzdys
Sukūrę ir įdėję Daržovės lentelės reikšmes, naudosime PASIRINKTI komanda grąžinti visas eilutes Daržovės lentelė:
SELECT * FROM Vegetables;
Išvestis
Sėkmingai įgyvendinę aukščiau pateiktą komandą, gausime žemiau pateiktą išvestį:
Apžvalga
Viduje PostgreSQL serijinis pseudo tipas skyrių, išmokome serijinio pseudo tipo funkcionalumą, kuris dažniausiai naudojamas kuriant an automatinis padidėjimas konkrečios lentelės stulpelio reikšmė.